有什么区别:
foo = TOKEN1 + TOKEN2
和
foo = Combine(TOKEN1 + TOKEN2)
谢谢。
更新:根据我的实验,它似乎Combine()
适用于终端,您试图在其中构建一个匹配的表达式,而 plain+
用于非终端。但我不确定。
结合有2个效果:
它将所有标记连接成一个字符串
它要求匹配的标记都相邻,没有中间的空格
如果你创建一个表达式
realnum = Word(nums) + "." + Word(nums)
然后realnum.parseString("3.14")
将返回 3 个标记的列表:前导 '3'、'.' 和尾随 '14'。但是如果你将它包装在 Combine 中,如下所示:
realnum = Combine(Word(nums) + "." + Word(nums))
然后realnum.parseString("3.14")
将返回“3.14”(然后您可以使用解析操作将其转换为浮点数)。并且由于 Combine 抑制了 pyparsing 在标记之间跳过默认空格,因此您不会在“答案是 3。14 是下一个答案”中意外找到“3.14”。