Pyparsing将始终在' setParseAction'上插入列表。

时间:2018-05-13 11:24:48

标签: python-3.x pyparsing

显然,如果您添加任何解析操作并在该操作中返回结果,结果将始终封装到列表中并加深'输出树。

我认为这是为了返回多个值,但它使得随意使用库变得更加困难,因为你必须记住你替换的树的哪些部分并调用result.normalstruct.replaced[0](甚至更糟result.normalstruct['replaced'][0]

这有点奇怪,让重构变得更难,所以我想要一种避免重构的方法。有什么提示吗?

1 个答案:

答案 0 :(得分:1)

这里的问题是setParseAction参数标记已经是一个列表。我不应该在str(token_argument)上操作,而应该在str(token_argument[0])上操作并返回。不再深化。

编辑:虽然显然它并不总是发生。用一个单词动作发生在我身上,但是当我试图解开' '和'的元素零表达式来自setParseAction仿函数,它给了我第一个子表达式。

伙计,我喜欢这里的一致性。