Конечное местоположение строки сканирования:почему это end_index+1?
-
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
.
Не связан с StackOverflow