使用pyparsing解析命名的嵌套表达式

时间:2015-04-24 14:49:41

标签: python pyparsing

我尝试使用看起来(或多或少)看起来像这样的pyparsing来解析一些数据:

User.Name = Dave
User.Age  = 42
Date      = 2015/01/01
Begin Component List
  Begin Component 2
    1 some data   = a value
    2 another key = 999
  End Component 2
  Begin Another Component
    a.key = 42
  End Another Component
End Component List
Begin MoreData
    Another = KeyPair
End MoreData

我发现了一些类似的例子,但我自己表现不佳。

parsing file with curley brakets Parse line data until keyword with pyparsing

这是我到目前为止所做的事情,但我仍然遇到类似于以下错误的错误:pyparsing.ParseException: Expected "End" (at char 26), (line:5, col:1)

from pyparsing import *

data = '''Begin A
hello
world
End A
'''

opener = Literal('Begin') + Word(alphas)
closer = Literal('End') + Word(alphas)
content = Combine(OneOrMore(~opener
                            + ~closer
                            + CharsNotIn('\n', exact=1)))
expr = nestedExpr(opener=opener, closer=closer, content=content)

parser = expr

res = parser.parseString(data)
print(res)

"开始"之后的词语很重要。被捕获,因为这些是字典的名称,以及键值对。在开场白之后有一个数字,例如"开始组件2" " 2"是我不需要的对数(可能是原始软件使用的?)。同样,我也不需要列表中的数字(" 1"和" 2")。

nestedExpr对此有正确的解决方法吗?

0 个答案:

没有答案