違いは何ですか:
foo = TOKEN1 + TOKEN2
と
foo = Combine(TOKEN1 + TOKEN2)
ありがとう。
更新:私の実験に基づいて、Combine()
一致する式を作成しようとしている端末用のようですが、プレーン+
は非端末用です。確信はないけど。
結合には 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" を見つけることはありません。