【发布时间】:2011-08-12 08:27:14
【问题描述】:
我正在尝试使用 pyparsing 解析一行。该行由许多(键,值)组成。我想得到的是(键,值)的列表。一个简单的例子:
ids = 12 fields = name
应该是这样的:[('ids', '12'), ('fields', 'name')]
一个更复杂的例子:
ids = 12, 13, 14 fields = name, title
应该产生类似:[('ids', '12, 13, 14'), ('fields', 'name, title')]
PS:结果列表中的元组只是一个示例。它可以是一个 dict 或另一个列表或其他任何东西,这并不重要。
但是到目前为止,无论我尝试过什么,我都会得到如下结果:
[('ids', '12 fields')]
考虑到它也是价值的一部分,Pyparsing 正在吃下一个键。
这是一个示例代码:
import pyparsing as P
key = P.oneOf("ids fields")
equal = P.Literal('=')
key_equal = key + equal
val = ~key_equal + P.Word(P.alphanums+', ')
gr = P.Group(key_equal+val)
print gr.parseString("ids = 12 fields = name")
有人可以帮助我吗?谢谢。
【问题讨论】:
标签: python parsing grammar pyparsing