scanString Endstelle: warum es end_index + 1?
-
11-09-2019 - |
Frage
python / pyparsing
Wenn ich scanString Methode verwenden, es gibt die Start- und Endpunkt des Tokens angepasst, in dem Text.
z.
line = "cat bat"
pat = Word(alphas)
for i in pat.scanString(line):
print i
ich wie folgt vor:
((['cat'], {}), 0, 3)
((['bat'], {}), 4, 7)
Aber Katze Endstelle sollte „2“ sein, oder? Warum wird die nächste Stelle wie die Endstelle Berichterstattung?
Lösung
Dies steht im Einklang mit Python [begin:end]
Slicing-Konventionen, wo das „Ende“ der Index des nächsten Zeichens ist. Indem das Ende als der nächste Ort, es ist sehr einfach, das passende substring der zurückgegebenen Werte zu extrahieren:
for t,start,end in pat.scanString(line):
print line[start:end]
Sie können sehen, wie diese verwendet, wenn Sie in der pyparsing Quellcode für die Umsetzung von transformString
aussehen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow