Pyparsing文档显示了如何使用 setResultsName(...)方法设置生成的字典键。但是,我看了几次省略了这个方法,只使用了(...)。 我的意思是:
而不是:
exp1 = pp.Word(pp.alphas).setResultsName('word1')
exp1.parseString( "Hello" ).asDict()
......人们可以这样做:
exp1 = pp.Word(pp.alphas)('word1')
exp1.parseString( "Hello" ).asDict()
......结果将完全相同。
所以有2个问题:
我在哪里可以找到确认省略 setResultsName 的文件?
这是如何运作的?是 pp.Word(pp.alphas),是一个pyparsing对象,一个函数?那怎么实现呢?
由于
答案 0 :(得分:1)
您可以找到pyparsing文档online。
setResultsName的文档说:
定义引用匹配标记的名称作为嵌套属性 返回的解析结果。注意:这将返回的副本 原始的ParserElement对象;这样客户端就可以定义一个 基本元素,例如整数,并在多个地方引用它 有不同的名字。
您还可以使用缩写语法设置结果名称, expr(" name")代替expr.setResultsName(" name") - 见
__call__
。
__call__
的信息确认了此行为。
由于ParserElement类实现了__call__
,这使得该类的实例可以像函数一样调用。在这种情况下,使用字符串参数调用ParserElement实例等同于调用setResultsName
。