setResultsName只显示第一个列表项
问题描述:
考虑下面的小例子:我怎样才能pyparsing分配整个列表,[ 'ookf', '大木'setResultsName只显示第一个列表项
from pyparsing import Word, delimitedList
the_list = delimitedList(Word("fine").setResultsName("extension", listAllMatches=True))
prefixed = Word("okay").setResultsName("base") + the_list
prefixed.addParseAction(lambda x: map(lambda element: x.base + element, x.extension))
final = prefixed.setResultsName("doesNotWork", listAllMatches=True) + Word("x")
final.parseString("ookf,i,n,ex")
回报
(['ookf', 'ooki', 'ookn', 'ooke', 'x'], {'doesNotWork': [((['ookf'], {}), 0)]})
, 'ookn','ooke','x'],去做NotNot,而不仅仅是第一个列表项目?
答
如果你改变prefixed
到:
prefixed = Group(Word("okay").setResultsName("base") + the_list)
请问这个是可以接受的?
感谢pyparsing和您的答复。不幸的是,我有问题让我的parseAction使用您的建议。当我尝试prefixed.parseString。(“okf,i,n,e”)时,我会得到一个空字符串,而不是“ok” – Inkane 2012-04-30 06:17:00
该组添加了另一层嵌套结果 - 尝试'前缀.parseString( '...')[0] .base'。 – PaulMcG 2012-04-30 13:01:40