PyParsing:Combine()做什么?

Nic*_*ner 5 python parsing nlp pyparsing

有什么区别:

foo = TOKEN1 + TOKEN2
Run Code Online (Sandbox Code Playgroud)

foo = Combine(TOKEN1 + TOKEN2)
Run Code Online (Sandbox Code Playgroud)

谢谢.

更新:根据我的实验,似乎Combine()是终端,你正在尝试构建一个表达匹配,而普通+是非终端.但我不确定.

Pau*_*McG 14

Combine有2个效果:

  • 它将所有标记连接成一个字符串

  • 它要求匹配的令牌都是相邻的,没有中间空格

如果你创建一个表达式

realnum = Word(nums) + "." + Word(nums)
Run Code Online (Sandbox Code Playgroud)

然后realnum.parseString("3.14")将返回3个令牌的列表:前导'3','.'和尾随'14'.但如果你在Combine中包装它,如:

realnum = Combine(Word(nums) + "." + Word(nums))
Run Code Online (Sandbox Code Playgroud)

然后realnum.parseString("3.14")将返回'3.14'(然后您可以使用解析操作将其转换为浮点数).而且,由于合并禁止显示pyparsing的标记之间默认空格跳跃,你不会意外发现"3.14",在"答案是3.14是下一个答案."