列表文件,在python2.7中作为单个列表导入

File of lists, import as individual lists in python 2.7

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

1
[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文件,它应该读取我之前创建的文件,并使用排序算法对数字进行排序。

问题是,我似乎不知道如何将我之前创建的列表作为列表读取到文件中。

真的有办法做到这一点吗?或者我最好还是重写输出程序,这样我就可以把输入转换成一个列表了?


如果您的文件看起来像:

1
2
3
4
5
6
7
21
19
14
22
18
23
...

使用此:

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

如果它真的像一个列表,如[21, 19, 14, 22...],下面是一个简单的方法:

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

如果你的文件不严格符合规范。例如,它看起来像[ 21,19, 14 , 22...]。下面是使用regex的另一种方法:

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


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

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