假设我有一个由以下列表理解生成的元组列表:
foo = [(x**2, x*2) for x in xrange(10)]
如果我再写
print foo
我得到如下所示的输出:
[(0, 0), (1, 2), (4, 4), (9, 6), (16, 8), (25, 10), (36, 12), (49, 14), (64, 16), (81, 18)]
假设我之前已将此输出写入文件 foo.txt
,并想再次将此输出作为元组列表读回 Python。请注意,这是一个玩具示例,因为我显然可以重写列表理解,但在我的实际用例中,我做了一些昂贵的计算来生成原始的元组列表,我不想重复计算。
有没有一种方法可以在不使用正则表达式或其他一些标准字符串解析方法手动解析的情况下执行此操作?
最佳答案
您正在寻找 ast.literal_eval()
:
import ast
with open('foo.txt', 'r') as myfile:
fileoutput = myfile.read() # Assuming the whole file is just the list
original = ast.literal_eval(fileoutput)
for i in original:
print i
打印:
(0, 0)
(1, 2)
(4, 4)
(9, 6)
(16, 8)
(25, 10)
(36, 12)
(49, 14)
(64, 16)
(81, 18)
关于python - 有没有一种简单的方法可以使用 Python 解析由 Python 打印生成的元组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17006788/