scanString emplacement final: pourquoi il est END_INDEX + 1?
-
11-09-2019 - |
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?
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