Конечное местоположение строки сканирования:почему это end_index+1?

StackOverflow https://stackoverflow.com/questions/1834456

  •  11-09-2019
  •  | 
  •  

Вопрос

python/пипарсинг

Когда я использую метод scanString, он указывает начальное и конечное местоположение соответствующего токена в тексте.

например ,

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

Я получаю следующее:

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

Но конечное местоположение cat должно быть "2", верно?Почему он сообщает о следующем местоположении как о конечном местоположении?

Это было полезно?

Решение

Это согласуется с Python's [begin:end] условные обозначения нарезки, где "конец" - это индекс следующего символа.Поместив конец в качестве следующего местоположения, очень просто извлечь соответствующую подстроку, используя возвращаемые значения:

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

Вы можете увидеть, как это используется, если посмотрите в исходном коде pyparsing реализацию transformString.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top