使用pyparsing版本3.0.0a2生成一些铁路图,我最终得到了名为Group或未命名的1、2等子图。不需要说几个不同的表达式都有Group的名称。我们如何为每个表达式指定想要的名称?

发布于 2020-07-31 02:37:51
确保您正在对语法中的重要表达式调用setName。
此表达式将以未命名的形式显示:
# US social security numbers are of the form 000-00-0000
ssn = Word(nums, exact=3) + '-' + Word(nums, exact=2) + '-' + Word(nums, exact=4)

setName将一个名称附加到表达式中:
ssn = (Word(nums, exact=3)
+ '-' + Word(nums, exact=2)
+ '-' + Word(nums, exact=4)).setName("social_security_number")

记住setName和setResultsName之间的区别
setName将名称附加到表达式本身(这个概念现在在铁路图支持中得到了更明确的说明),setResultsName指定要附加到此表达式提取的解析结果的名称。
表达式只有一个名称,例如Word(nums)是一个“整数”。但是,这个表达式可以在语法中的几个地方使用,因此可以有多个结果名称。在本例中,请参见如何多次使用real:
real = Regex(r"\d+\.\d+").setName("real number")
lat_long = "(" + Char("NS") + real("latitude") + "," + Char("EW") + real("longitude") + ")"https://stackoverflow.com/questions/63172640
复制相似问题