基于此语法:
from pyparsing import *
g = quotedString.setParseAction( removeQuotes )
eg = Suppress('-') + quotedString.setParseAction( removeQuotes )
choice = Or( [ g.setResultsName("out",listAllMatches=True),
eg.setResultsName("in",listAllMatches=True) ] )
grammar = ZeroOrMore( choice ) + Suppress(restOfLine)
a = world.parseString( ' "ali" -"baba" "holy cow" -"smoking beaute" ' )
print a.dump()
我发现满足eg
非终结符的标记总是包装在一个额外的列表中。与g
的唯一区别是它有一个前导的“Suppress('-')”。在
如何让他们表现得一样?我想达到以下结果:
['ali', 'baba', 'holy cow', 'smoking beaute']
- in: ['baba', 'smoking beaute']
- out: ['ali', 'holy cow']
我研究这个问题已经有一段时间了-问题是和总是以列表的形式返回它们的令牌,即使它们只包含一个值。在
下面是一个解组器,它可以帮您清除这个问题,我将在下一个pyparsing版本中包含它:
通过您的测试代码,我现在得到以下结果:
^{pr2}$相关问题 更多 >
编程相关推荐