在.txt文件中以列表形式而不是以字符串形式打开元素

时间:2018-07-29 16:56:37

标签: python string

我错误地将列表列表另存为.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

有没有一种方法可以打开我的文件而不将列表作为字符串读取(我想避免不得不再次运行程序并以另一种方式保存文件)?谢谢!

2 个答案:

答案 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_evaljson.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]]