2015-09-03 98 views
1

我有一个.txt文件与它列表中获取的信息(这里是列表的例子):从.txt文件

[[[[1155, 87]], [[1155, 612]], [[385, -81]], 0, 0, 0, 0, 0, 0, 0], [151, 130, 83, 0, 0, 0, 0, 0, 0, 0], [2, 4, 2, 0, 0, 0, 0, 0, 0, 0], [22, 31, 1, 0, 0, 0, 0, 0, 0, 0], [(1, 2, 3), (1, 2, 3), (1, 2, 3), 0, 0, 0, 0, 0, 0, 0], [[2, 3], [1, 3], [3], 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 0, 0, 0, 0, 0, 0, 0]] 

我想获得这个列表回到我的程序,所以我打开文件:

file = open(file.txt).read() 

然后我设法得到它在我的计划: a = file, 但我有一个字符串,而不是一个列表,例如a[0]返回字符串的第一个字符:[。所以对我来说有两个选择:要么我不知道如何打开并使用文件,要么我必须用循环取回我的列表,但它看起来很复杂。

回答

5

您可以使用ast.literal_eval

from ast import literal_eval 

with open("file.txt") as f: 
    lst = literal_eval(f.read()) 
+2

我正要回答,但我不知道'literal_eval'。这真是一个很棒的解决方案。 – porglezomp

+0

我试过了,我有一个很大的错误:文件“d:\ Users \ Lucas \ Desktop \ space invaders \ propre \ level edit2.py”,行711,leveleditor lst = literal_eval(f.read) File“ d:\ Program Files \ python \ lib \ ast.py“,行87,in literal_eval return _convert(node_or_string) 文件”d:\ Program Files \ python \ lib \ ast.py“,第86行,在_convert 提高ValueError('malformed node or string:'+ repr(node)) ValueError:格式不正确的节点或字符串:<0x02B4ED50处的_io.TextIOWrapper对象的内置方法读取> – Philipe

+0

@Philipe,您似乎正在将引用传递给一个不是f.read()的方法,你用过'literal_eval(f.read)< - 缺少parens'吗? –