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

代替:

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


...可以做到:

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


...结果将完全相同。

所以有两个问题:


我在哪里可以找到确认可以省略setResultsName的文档?
这是如何运作的? pp.Word(pp.alphas)是一个pyparsing对象,是一个函数吗?那如何实现呢?


谢谢

最佳答案

您可以找到pyparsing文档online

setResultsName的文档说:


  定义引用匹配标记的名称作为的嵌套属性
  返回的解析结果。注意:这将返回
  原始的ParserElement对象;这样客户可以定义一个
  基本元素(例如整数),并在多个地方引用它
  用不同的名字。
  
  您还可以使用缩写语法设置结果名称,
  使用expr(“ name”)代替expr.setResultsName(“ name”)-请参见__call__


__call__的信息确认此行为。

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

10-07 15:19