Python将txt文件读入数字列表列表

时间:2015-10-26 17:20:34

标签: python

我的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()

3 个答案:

答案 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))