2015-11-19 92 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