2017-04-26 33 views
2

我有一個文件,其中每行是一個樹的列表表示。例如,文件中的這些線路之一是:如何讀取文件的行是列表而不是python中的字符串

[1, [[2,[]], [3, [ [5,[]], [6, [ [10,[]] ] ] ]], [4, [ [7,[]], [8,[]], [9,[]] ]] ]] 

如果我複製並粘貼到我的程序,它知道它是一個列表,我可以很容易地操縱它來找到根和孩子,然後帶走這些孩子並找到他們的孩子等等。當我逐行讀取一個文件時,它會將這些行轉換爲字符串。如果我試圖將這些字符串轉換爲列表,那麼它會將字符串中的每個單獨字符作爲列表中的不同項目,這些不是我想要的。

我只是想知道我怎麼可以逐行讀取文件,但不是它吐出字符串,它給了我每行的文字列表形式。我正在閱讀的文件是一個.txt文件,它必須保持這種方式,我不能將它保存爲一個.py文件或類似的東西。

+0

你聽說過'pickle'或'csv'模塊? – zondo

+1

您正在尋找['ast.literal_eval'](https://docs.python.org/3/library/ast.html#ast.literal_eval)。 – zwol

回答

2

嘗試ast模塊:

>>> s = "[1, [[2,[]], [3, [ [5,[]], [6, [ [10,[]] ] ] ]], [4, [ [7,[]], [8,[]], [9,[]] ]] ]]" 
>>> l = ast.literal_eval(s) 
>>> l[0] 
1 
+0

這個作品,謝謝! – Blake

相關問題