終了位置をscanString:それはEND_INDEX + 1である理由?
-
11-09-2019 - |
質問
のpython / pyparsing
私はscanStringメソッドを使用する場合は、、それはテキストで、マッチしたトークンの開始と終了位置を与えています。
例えばます。
line = "cat bat"
pat = Word(alphas)
for i in pat.scanString(line):
print i
私は、次の取得ます:
((['cat'], {}), 0, 3)
((['bat'], {}), 4, 7)
しかし、猫の最後の場所は「2」、右すべきですか?それが最後の場所として次の場所を報告しているのはなぜ?
解決
このは「終わり」が次の文字のインデックスであるPythonの[begin:end]
スライスの規則と一致しています。次の位置として終了を置くことによって、返された値を使用して、一致するサブストリングを抽出することは非常に簡単である:
for t,start,end in pat.scanString(line):
print line[start:end]
あなたはtransformString
の実施のためのpyparsingソースコードで見れば、これが使用されているかを確認することができます。
所属していません StackOverflow