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

标签 python list

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

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/

相关文章:

python - 在 for 循环中创建多个列表

python - 什么是 [1 :] do in a recursive function

python - Sacred - 将所有参数作为一个参数传递

python - Windows 中的 SQLAlchemy 引擎绝对路径 URL

php - 如何清除或删除 SplStack 中的所有元素?

java - 如何创建重复列表项的列表?

python - 在> 2000000个项目的列表中查找重复项索引的快速方法

java - 这个链表反向实现是如何工作的呢?

python - 如何从 pandas 数据框中排除值?

python - 在双引号和单引号中打印