通过Python读取文件获取列表

Tem*_*eck 1 python get file list

我无法在Python中解决这个问题.

我试图通过读取文件(如.xml或.txt)来获取列表.

我把我的列表放在我的文件中的大列表中:

[[48,49,39,7,13,1,11],[46,27,19,15,24,8,4],[35,5,41,10,31,5,9],[12,9,22,2,36,9,2],[50,47,25,6,42,3,1]]
Run Code Online (Sandbox Code Playgroud)

现在我正在寻找代码来获得像列表一样的大列表,而不是像字符串.实际上,我已经尝试了open(),write()和read()函数的一些代码部分.但Python回复了我:

'[[48,49,39,7,13,1,11],[46,27,19,15,24,8,4],[35,5,41,10,31,5,9],[12,9,22,2,36,9,2],[50,47,25,6,42,3,1]]'
Run Code Online (Sandbox Code Playgroud)

它不是一个列表,只是一个字符串.所以我不能使用list的函数来修改它.

感谢那些能回答我问题的人

zmo*_*zmo 7

好吧,一个简单的方法是将其解析为json字符串:

>>> import json
>>> l_str = '[[48,49,39,7,13,1,11],[46,27,19,15,24,8,4],[35,5,41,10,31,5,9],[12,9,22,2,36,9,2],[50,47,25,6,42,3,1]]'
>>> l = json.loads(l_str)
>>> print l
[[48, 49, 39, 7, 13, 1, 11], [46, 27, 19, 15, 24, 8, 4], [35, 5, 41, 10, 31, 5, 9], [12, 9, 22, 2, 36, 9, 2], [50, 47, 25, 6, 42, 3, 1]]
Run Code Online (Sandbox Code Playgroud)

如果要加载包含该字符串的文件,可以使用以下命令执行此操作:

>>> import json
>>> with open('myfile') as f:
>>>     l = json.load(f)
>>>     print l
[[48, 49, 39, 7, 13, 1, 11], [46, 27, 19, 15, 24, 8, 4], [35, 5, 41, 10, 31, 5, 9], [12, 9, 22, 2, 36, 9, 2], [50, 47, 25, 6, 42, 3, 1]]
Run Code Online (Sandbox Code Playgroud)

但是如果你想要的是序列化python 对象,那么你应该pickle在那个任务中使用它更强大......

当然,也有其他人可能给你通过分析你的字符串等方式eval()般的功能,但我强烈建议你对抗,因为这是危险的,会导致不安全的代码.编辑:在阅读@kamikai回答之后,我发现ast.literal_eval()哪个看起来也是一个不错的选择,虽然json.loads() 效率更高.