7

違いは何ですか:

foo = TOKEN1 + TOKEN2

foo = Combine(TOKEN1 + TOKEN2)

ありがとう。

更新:私の実験に基づいて、Combine()一致する式を作成しようとしている端末用のようですが、プレーン+は非端末用です。確信はないけど。

4

1 に答える 1

18

結合には 2 つの効果があります。

  • すべてのトークンを単一の文字列に連結します

  • 一致するトークンがすべて空白を挟まずに隣接している必要があります

のような式を作成すると、

realnum = Word(nums) + "." + Word(nums)

次にrealnum.parseString("3.14")、先頭の「3」、「.」、末尾の「14」の 3 つのトークンのリストを返します。しかし、これを結合でラップすると、次のようになります。

realnum = Combine(Word(nums) + "." + Word(nums))

次に、realnum.parseString("3.14")「3.14」を返します(これは、解析アクションを使用して float に変換できます)。また、Combine はトークン間の pyparsing の既定の空白のスキップを抑制するため、"The answer is 3. 14 is the next answer" で誤って "3.14" を見つけることはありません。

于 2010-05-31T00:30:25.080 に答える