【问题标题】:File of lists, import as individual lists in python 2.7列表文件,在 python 2.7 中作为单个列表导入
【发布时间】:2016-02-08 12:34:37
【问题描述】:

我在一个程序中创建了一个文本文件,它以伪随机顺序输出数字 1 到 25,例如:

[21, 19, 14, 22, 18, 23, 25, 10, 6, 9, 1, 13, 2, 7, 5, 12, 8, 20, 24, 15, 17, 4, 11, 3, 16]

现在我有另一个 python 文件,它应该读取我之前创建的文件并使用排序算法对数字进行排序。

问题是我似乎无法弄清楚如何将我之前创建的列表作为列表读取到文件中。

真的有办法做到这一点吗?或者我会更好地以某种方式重写我的输出程序,以便我可以将输入转换为列表?

【问题讨论】:

  • 您可以将列表元素逐行写入文件并使用stackoverflow.com/questions/3925614/…
  • 是的,但是如果您的原始程序不保存括号会更简单。正如 gauden 所展示的,如果你也去掉逗号,它会更简单。

标签: python list file python-2.7


【解决方案1】:

如果您的文件如下所示:

21
19
14
22
18
23
...

使用这个:

with open('file') as f:
    mylist = [int(i.strip()) for i in f]

如果它真的看起来像[21, 19, 14, 22...] 这样的列表,这里有一个简单的方法:

with open('file') as f:
    mylist = list(map(int, f.read().lstrip('[').rstrip(']\n').split(', ')))

如果您的文件严格符合规范。例如,它看起来像 [ 21,19, 14 , 22...]。这是使用正则表达式的另一种方式:

import re
with open('file') as f:
    mylist = list(map(int, re.findall('\d+', f.read())))

【讨论】:

  • 可能不是,因为这些数字看起来都在一行上,并且用逗号和空格分隔。
  • @PM2Ring 好吧,你的意思是 OP 真的将列表作为字符串写入文件?但是我永远不会那样做......
  • 好的,这行得通。假设 OP 的文件严格符合规范。 :)
  • @PM2Ring 我添加了另一种使用正则表达式的方式。因此,尽管 OP 的文件 not 严格符合规范,但这种方式也可以工作 ;)
  • 是的,我做到了,我意识到这不是最聪明的主意。我非常感谢您的帮助,但我认为我的输出根本没有用并重写了文件。谢谢! :)
【解决方案2】:

如果您不想更改当前脚本的输出,可以使用ast.literal_eval()

import ast
with open ("output.txt", "r") as f:
    array=ast.literal_eval(f.read()) 

【讨论】:

  • @KevinGuan 好的,感谢您的反馈。我已更新我的答案以使用 ast.literal_eval()
猜你喜欢
  • 2018-02-25
  • 1970-01-01
  • 2013-11-04
  • 2017-12-15
  • 1970-01-01
  • 2018-11-21
  • 2013-02-04
  • 1970-01-01
相关资源
最近更新 更多