2015-09-03 102 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'嗎? –