문제

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top