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?

War es hilfreich?

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
scroll top