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
。