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