scanString localização final: por que é end_index + 1?
-
11-09-2019 - |
Pergunta
python / pyparsing
Quando eu usar o método scanString, ele está dando a localização de início e fim do token combinado, no texto.
por exemplo.
line = "cat bat"
pat = Word(alphas)
for i in pat.scanString(line):
print i
Eu recebo a seguinte:
((['cat'], {}), 0, 3)
((['bat'], {}), 4, 7)
Mas a localização final do gato deve ser "2", certo? Por que ele está relatando o próximo local como a localização final?
Solução
Isto é consistente com as convenções [begin:end]
fatiamento do Python, em que o "fim" é o índice do próximo personagem. Colocando o fim como o próximo local, é muito simples para extrair o substring correspondente usando os valores devolvidos:
for t,start,end in pat.scanString(line):
print line[start:end]
Você pode ver como isso é usado se você olhar no código fonte pyparsing para a implementação de transformString
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow