有一件事我无法用 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]]
现在我正在寻找代码来获得像列表一样的大列表,而不是字符串。事实上,我已经尝试使用 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]]'
它不是一个列表,只是一个字符串。所以我不能使用列表的功能来修改它。
感谢那些愿意回答我问题的人
请您参考如下方法:
嗯,一个简单的方法是将其解析为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]]
如果你想加载一个仅包含该字符串的文件,你可以简单地使用以下方法来完成:
>>> 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]]
但是如果你想要序列化 python objects,那么你应该使用 pickle那在那个任务上更强大......
当然,其他人可能会通过类似 eval() 的函数为您提供其他方法来解析您的字符串,但我强烈建议您不要这样做,因为这很危险并会导致不安全的代码。 编辑:阅读@kamikai 的回答后,我发现了 ast.literal_eval()这看起来也是一个不错的选择,虽然 json.loads() is more efficient .
