Scanstring End 위치 : End_index+1 인 이유는 무엇입니까?
-
11-09-2019 - |
문제
Python/pyparsing
Scanstring 방법을 사용하면 텍스트에서 일치하는 토큰의 시작 및 종료 위치를 제공합니다.
예를 들어
line = "cat bat"
pat = Word(alphas)
for i in pat.scanString(line):
print i
나는 다음을 얻는다 :
((['cat'], {}), 0, 3)
((['bat'], {}), 4, 7)
그러나 고양이 끝 위치는 "2"가되어야합니까? 다음 위치를 최종 위치로보고하는 이유는 무엇입니까?
해결책
이것은 파이썬과 일치합니다 [begin:end]
"끝"이 다음 캐릭터의 색인 인 슬라이싱 컨벤션. 끝을 다음 위치로두면 반환 된 값을 사용하여 일치하는 하위 문자를 추출하는 것이 매우 간단합니다.
for t,start,end in pat.scanString(line):
print line[start:end]
구현을 위해 pyparsing 소스 코드를 보면 이것이 어떻게 사용되는지 알 수 있습니다. transformString
.
제휴하지 않습니다 StackOverflow