Question

python / pyparsing

Quand j'utilise la méthode de scanString, il donne le départ et l'emplacement fin du jeton adapté, dans le texte.

par exemple.

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

Je reçois le texte suivant:

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

Mais l'emplacement final de chat doit être « 2 » droit? Pourquoi il rapporte l'emplacement suivant que l'emplacement final?

Était-ce utile?

La solution

Ceci est conforme aux conventions de découpage de [begin:end] de Python, où la « fin » est l'indice du caractère suivant. En mettant la fin comme l'emplacement suivant, il est très facile d'extraire le sous-chaîne correspondante en utilisant les valeurs retournées:

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

Vous pouvez voir comment cela est utilisé si vous regardez dans le code source de pyparsing pour la mise en œuvre de transformString.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top