Skip to main content
 首页 » 编程设计

python之有没有一种简单的方法可以使用 Python 解析由 Python 打印生成的元组列表

2025年05月04日14lexus

假设我有一个由以下列表理解生成的元组列表:

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)