我错误地将列表列表另存为.txt文件,现在打开该列表时,我的列表被视为字符串,如下所示:
mylist = ['[1,2,3,4,5]', '[4,47,6,7,3,9]',...]
是否可以打开文件而不以字符串形式读取列表? 我尝试过的:
my_new_list = []
for item in mylist:
new_item = eval(item)
my_new_list.append(new_item)
但是我得到了错误: new_item = eval(item)
File "<string>", line unknown
SyntaxError: unexpected EOF while parsing
有没有一种方法可以打开我的文件而不将列表作为字符串读取(我想避免不得不再次运行程序并以另一种方式保存文件)?谢谢!
答案 0 :(得分:1)
您的代码对我来说很好。问题出在文件(EOF)的末尾。验证您的mylist的最后一个元素
mylist = ['[1,2,3,4,5]', '[4,47,6,7,3,9]']
my_new_list = []
for item in mylist:
new_item = eval(item)
my_new_list.append(new_item)
print (my_new_list)
答案:[[1、2、3、4、5],[4、47、6、7、3、9]]
答案 1 :(得分:0)
使用ast.literal_eval
或json.loads
将每个字符串转换为列表。避免使用eval
,因为它可能会导致安全问题
使用ast.literal_eval
>>> import ast
>>> mylist = ['[1,2,3,4,5]', '[4,47,6,7,3,9]']
>>> [ast.literal_eval(e) for e in mylist]
[[1, 2, 3, 4, 5], [4, 47, 6, 7, 3, 9]]
使用json.loads
>>> import json
>>> mylist = ['[1,2,3,4,5]', '[4,47,6,7,3,9]']
>>> [json.loads(e) for e in mylist]
[[1, 2, 3, 4, 5], [4, 47, 6, 7, 3, 9]]