之间有什么区别?

foo = TOKEN1 + TOKEN2


foo = Combine(TOKEN1 + TOKEN2)

谢谢。

更新:根据我的实验,似乎Combine()用于终端,您要在其中构建要匹配的表达式,而普通+用于非终端。但是我不确定。

最佳答案

合并有2种效果:

  • 它将所有 token 连接成一个字符串
  • ,它要求所有匹配的 token 都相邻且没有空格

  • 如果您创建类似的表达式
    realnum = Word(nums) + "." + Word(nums)
    

    然后realnum.parseString("3.14")将返回3个 token 的列表:前导“3”,“。”和后缀“14”。但是,如果将其包装在Combine中,如下所示:
    realnum = Combine(Word(nums) + "." + Word(nums))
    

    然后realnum.parseString("3.14")将返回“3.14”(您可以使用解析 Action 将其转换为浮点数)。并且由于Combine禁止pyparsing的默认空白在标记之间跳过,因此您不会在“答案为3。14是下一个答案”中偶然发现“3.14”。

    关于python - PyParsing:Combine()有什么作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2940489/

    10-08 22:39