解析ad-hoc树

时间:2014-10-03 04:41:03

标签: python xml json algorithm tree

我有一个平面文件,如下所示:

Soccer

+Team:US
++Shirt:Red & White Stripes
++Shorts:Blue
++Players:17
+++Active:11
++++Forward:2
++++Midfield:4
++++Defense:4
++++Goalkeeper:1
+++Substitute:6
++++Forward:1
++++Midfied:2
++++Defense:3
++++Goalkeeper:

+Team:Mexico
++Shirt:Green
++Shorts:White
++Players:17
+++Active:11
++++Forward:3
++++Midfield:3
++++Defense:4
++++Goalkeeper:1
+++Substitute:6
++++Forward:2
++++Midfield:1
++++Defense:2
++++Goalkeeper:1

将此解析为Python中的数据结构的最有效方法是什么?或者,我如何将其转换为XML,JSON或普通的Python对象?

结果数据结构应该能够支持某种查询,例如在伪代码中,例如:

Soccer[Team='US'][Shirt]

应该能够返回" Red&白色条纹"

同样的顺序,

Soccer[Team='US'][Players][Substitute][Goalkeeper]

应该返回None

是否有一个可以在这里使用的模块?

1 个答案:

答案 0 :(得分:2)

对于此类内容,您可以使用Marpa::R2Perl Marpa, a general BNF parser - parserparse tree的界面。我对相关问题Processing repeatedly structured text file with python

的回答中有更多解释

ast_traverse()Parse values from a block of text based on specific keys

的示例