Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 与列表和文件处理相关?_Python - Fatal编程技术网

Python 与列表和文件处理相关?

Python 与列表和文件处理相关?,python,Python,我有一个以列表形式显示内容的文件,例如 [1,'ab','fgf','ssd'] [2,'eb','ghf','hhsd'] [3,'ag','rtf','ssfdd'] 我想使用f.readline逐行读取该文件,并将每一行分配给一个列表 我试着这样做: k=[ ] k=f.readline() print k[1] 我希望结果在第一行显示列表中的第二个元素,但它显示了第一位,并给出了o/p作为'1' 如何获得预期的输出?您可以在每一行上使用;这将对行中的表达式求值,如果格式正确,将生成

我有一个以列表形式显示内容的文件,例如

[1,'ab','fgf','ssd']
[2,'eb','ghf','hhsd']
[3,'ag','rtf','ssfdd']
我想使用
f.readline
逐行读取该文件,并将每一行分配给一个列表

我试着这样做:

k=[ ]
k=f.readline()
print k[1] 
我希望结果在第一行显示列表中的第二个元素,但它显示了第一位,并给出了o/p作为
'1'

如何获得预期的输出?

您可以在每一行上使用;这将对行中的表达式求值,如果格式正确,将生成预期的列表

更安全的解决方案是一个简单的CSV解析器。因此,您的输入可以如下所示(逗号分隔):

也许这是可行的。

你可以在每一行上使用;这将对行中的表达式求值,如果格式正确,将生成预期的列表

更安全的解决方案是一个简单的CSV解析器。因此,您的输入可以如下所示(逗号分隔):


也许这是可行的。

readline只返回字符串。你需要把它投给你想要的。执行作业时,请注意,不管它如何执行字符串中的所有内容,因此只有在您信任输入(即您自己保存了输入)的情况下,这才是一个选项


如果需要将程序中的数据保存到文件中,可能需要使用。

readline只返回字符串。你需要把它投给你想要的。执行作业时,请注意,不管它如何执行字符串中的所有内容,因此只有在您信任输入(即您自己保存了输入)的情况下,这才是一个选项


如果您需要将程序中的数据保存到文件中,您可能需要使用。

如果您只想采用显示的输入格式并将其存储为列表,尝试执行输入文件(使用)不是一个好主意。这会使您的程序受到各种意外和故意的有害输入的影响。建议您只解析输入文件:

s=f.readline()[1:-1]
k = s.split(',')
print k[1]

如果您只想采用显示的输入格式并将其存储为列表,那么尝试执行输入文件(使用)不是一个好主意。这会使您的程序受到各种意外和故意的有害输入的影响。建议您只解析输入文件:

s=f.readline()[1:-1]
k = s.split(',')
print k[1]

也许你可以按照建议使用eval,但我只是好奇:有没有理由不使用
JSON
作为文件格式?

也许你可以按照建议使用eval,但我只是好奇:有没有理由不使用
JSON
作为文件格式?

你可以使用模块:

产出:

ab
eb
ag
您可以使用以下模块:

产出:

ab
eb
ag

如果发布的示例是文件的实际内容(我对此深表怀疑),那么从Python 2.6开始,您可以做以下几点:


如果发布的示例是文件的实际内容(我对此深表怀疑),那么从Python 2.6开始,您可以做以下几点:


是否可以删除开头和结尾的
[]
?然后可以使用内置的CSV解析器。这是文件的实际内容吗?是否可以删除开头和结尾的
[]
?然后,您可以使用内置的CSV解析器。这是您文件的实际内容吗?但是,如果其中一个字符串包含
@Marian Fair point,则该解析器将失败,但是有一些方法可以绕过它。他们可能不需要三行代码,但是如果其中一个字符串包含一个
@Marian Fair point,那么这将失败,但是有办法解决这个问题。不过,它们可能不需要三行代码。
>>> for line in open(fname):
    print(ast.literal_eval(line)[1])


ab
eb
ag