我有一個形式爲name(sum(value1,sum(value2,value3)), "sumname")
的文本,pyparsing返回相應的令牌,但是,我有興趣獲取真正的文本,我找不到如何。如何從pyparsing令牌返回原始文本
我已經嘗試setParseAction函數,但由於它只返回字符串和位置,我無法應付尾隨部分。 一樣,我只會越來越:
"sum(value2,value3)), "sumname")"
"sum(value1,sum(value2,value3)), "sumname")"
"name(sum(value1,sum(value2,value3)), "sumname")"
這是不理想的,我不想手動重新解析字符串來獲得實際的原始字符串。
我想大氣壓的方法是:
tokens = grammar.parseString(target_string)
print >>sys.stderr, pyparsing.originalTextFor(tokens)
但是這並沒有真正的工作:
AttributeError: 'NoneType' object has no attribute 'setParseAction'
嗨,這我失敗了''tokens = grammar.parseString(target_string)' 'print >> sys.stderr,pyparsing.originalTextFor(tokens)''''''我懷疑這是因爲parseStrin g返回ParseResults而不是ParseElements –
'originalTextFor'包裝語法,而不是結果。試試'originalTextFor(grammar).parseString(tokens)'。 – PaulMcG
我明白了,但是,您始終提供原始字符串,而我所擁有的只是parseString的結果,而且我需要返回字符串。你傳遞一個字符串給parseString,是有道理的,但我沒有一個字符串,只是一個令牌集合。 –