PyParsing:Combine()做什么?

时间:2010-05-30 21:51:05

标签: python parsing nlp pyparsing

有什么区别:

foo = TOKEN1 + TOKEN2

foo = Combine(TOKEN1 + TOKEN2)

感谢。

更新:根据我的实验,似乎Combine()适用于终端,您正在尝试构建一个匹配的表达式,而普通+则是对于非终端。但我不确定。

1 个答案:

答案 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”。