在pyparsing表达式中省略setResultsName

时间:2014-11-15 04:54:24

标签: python dictionary pyparsing

Pyparsing文档显示了如何使用 setResultsName(...)方法设置生成的字典键。但是,我看了几次省略了这个方法,只使用了(...)。 我的意思是:

而不是:

exp1 = pp.Word(pp.alphas).setResultsName('word1')
exp1.parseString( "Hello" ).asDict()

......人们可以这样做:

exp1 = pp.Word(pp.alphas)('word1')
exp1.parseString( "Hello" ).asDict()

......结果将完全相同。

所以有2个问题:

  1. 我在哪里可以找到确认省略 setResultsName 的文件?

  2. 这是如何运作的?是 pp.Word(pp.alphas),是一个pyparsing对象,一个函数?那怎么实现呢?

  3. 由于

1 个答案:

答案 0 :(得分:1)

您可以找到pyparsing文档online

setResultsName的文档说:

  

定义引用匹配标记的名称作为嵌套属性   返回的解析结果。注意:这将返回的副本   原始的ParserElement对象;这样客户端就可以定义一个   基本元素,例如整数,并在多个地方引用它   有不同的名字。

     

您还可以使用缩写语法设置结果名称,   expr(" name")代替expr.setResultsName(" name") - 见__call__

__call__的信息确认了此行为。

由于ParserElement类实现了__call__,这使得该类的实例可以像函数一样调用。在这种情况下,使用字符串参数调用ParserElement实例等同于调用setResultsName