我的txt文件如下所示:
[[1,3,5],[1,4,4]]
[[1,4,7],[1,4,8],[2,4,5]]
我试图将其转换为列表,其中包含txt文件中的所有列表。所以我的例子的期望输出是:
[[[1,3,5],[1,4,4]], [[1,4,7],[1,4,8],[2,4,5]]]
这似乎是一项简单的任务,除了我只能得到这个:
['[[1,3,5],[1,4,4]]', '[[1,4,7],[1,4,8],[2,4,5]]']
有没有简单的方法将字符串类型转换为列表?
我使用的代码:
input_list = []
with open("./the_file.txt", 'r') as f:
lines = f.read().split('\n')
for each_line in lines:
input_list.append(each_line)
f.close()
答案 0 :(得分:4)
您真的想要将文件中的每一行评估为实际的python代码。但是,这样做可能会有问题(例如:如果一行说import os; os.system('rm -rf /')
会发生什么情况)。
So you don't want to use something like eval
这个
相反,您可以考虑使用ast.literal_eval
,它有一些针对此类行为的保护措施:
with open("./the_file.txt", 'r') as f:
answer = [ast.literal_eval(line.strip()) for line in f]
答案 1 :(得分:1)
这可以在ast.literal_eval
和列表理解的一行中完成:
from ast import literal_eval
input_list = [literal_eval(line) for line in open("./the_file.txt", 'r') ]
答案 2 :(得分:0)
如果文本文件中的行格式正确,则可以使用eval。
input_list.append(eval(each_line))