2015-11-19 103 views
0

我正在爲學校做一個項目,爲了甚至開始,我必須找到一種方法將文本文件中的一行轉換爲列表。我知道如何正常執行此操作(例如,如果我給出1 2 3 4 5 6),但我給出的文本文件是binaryTree(包括字符'['和',')。實際的文本文件如下。將包含樹的文本文件轉換爲列表

[3, [9, [11, [4,[],[]], []], [] ], [7 , [], [6,[],[]]] ] 
[3, [5, [4,[],[]], [8,[],[]]] , [7, [9,[],[]], [6,[],[]]]] 
["alpha", ["berries", ["carrots", ["diamonds", ["edward",[],[]],[]],[]],[]],[]] 
[7,[3,[2,[9,[],[]],[11,[1,[],[]],[]]],[]],[4,[5,[],[]],[8,[12,[13,[],[]],[0,[],[]]],[]]]] 
[99, [], []] 

每當這種做的方式我會爲1 2 3 4 5 6和呼叫myList中[0] I沒有得到根3(在第一行中的樹),而是該調用返回的拳頭托架'['。有人可以展示我的方法,將上面的每一行轉換爲代表一棵樹的多個名單。

回答

3

您可以使用ast.literal_eval把串到其他的內置數據類型:

>>> import ast 
>>> line = "[3, [9, [11, [4,[],[]], []], [] ], [7 , [], [6,[],[]]] ]" 
>>> myList = ast.literal_eval(line) 
>>> myList 
[3, [9, [11, [4, [], []], []], []], [7, [], [6, [], []]]] 

>>> myList[0] 
3 
+0

感謝您與得到的'一些堅果前ast.literal_eval'建議普通'eval'! – ShadowRanger