0

パイソン/パイパーシング

scanString メソッドを使用すると、一致したトークンの開始位置と終了位置がテキストで示されます。

例えば

line = "cat bat"
pat = Word(alphas)
for i in pat.scanString(line):
    print i

私は以下を取得します:

((['cat'], {}), 0, 3)
((['bat'], {}), 4, 7)

でも、猫の終了位置は「2」のはずですよね?次の場所が終了場所として報告されるのはなぜですか?

4

1 に答える 1

1

[begin:end]これは、"end" が次の文字のインデックスであるPython のスライス規則と一致しています。末尾を次の場所にすることで、返された値を使用して一致する部分文字列を抽出するのは非常に簡単です。

for t,start,end in pat.scanString(line):
    print line[start:end]

の実装の pyparsing ソース コードを見ると、これがどのように使用されているかがわかりますtransformString

于 2009-12-04T13:17:51.873 に答える