有什么区别:
foo = TOKEN1 + TOKEN2
和
foo = Combine(TOKEN1 + TOKEN2)
感谢。
更新:根据我的实验,似乎Combine()
适用于终端,您正在尝试构建一个匹配的表达式,而普通+
则是对于非终端。但我不确定。
答案 0 :(得分:14)
Combine有两种效果:
它将所有令牌连接成一个字符串
它要求匹配的令牌都是相邻的,没有插入的空格
如果你创建一个像
这样的表达式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'(然后您可以使用解析操作将其转换为float)。而且由于Combine抑制了pyparsing在令牌之间跳过的默认空格,你不会在“答案是3. 14是下一个答案”中意外找到“3.14”。