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?

Foi útil?

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