문자열에서 특정 패턴의 대략적인 일치를 만들 수있는 스크립트 작업 중입니다.이 패턴 (중첩 될 수 있음)이 시작되는 위치 만보고합니다.근사 일치 위치
지금까지, 나는 정확히 일치의 위치를보고 할 수있는 스크립트를 얻을 수 있지만 대략적인 사람을위한 성공 :
import re
stn = 'KLHLHLHKPLHLHLPHHKLHKLPKPH'
pat = 'KLH'
matches = re.finditer(r'(?=(%s))' % re.escape(pat), stn)
finalmatch= [m.start() for m in matches]
pos = ' '.join(str(v) for v in finalmatch)
print pos
이 경우 결과는 다음과 같습니다 하지만 경우 스크립트 보고서도 대략 일치합니까? 즉 허용 된 최대 오류 (허용치 또는 임계 값)가 1 (쿼리 패턴의 모든 위치) 인 경우 HLH, PLH, KLP, KPH의 초기 위치는 어떻게보고 될 수 있습니까?
나는 이미 Levenshtein이나 SequenceMatcher와 같은 거리 측정을 포함 시키려고했으나 성공하지 못했습니다.
미리 도움을 주셔서 감사합니다.
내가 생각을 이해하지만, 스크립트 때문에 'LH (잘못된 구문)과 같은 불완전한 문자열의 오류를 불러 일으킨다. 나는 행렬을 사용하는 것과 마찬가지로 너무 복잡하게하지 않고 문제를 해결하는 방법을 모른다. –
방금 finditer()를 사용하고 있다는 것을 깨달았습니다. 이것은 목록 확장 대신에'chain()'을 사용해야한다는 것을 의미합니다. 아마도 이것이 도움이 될까요? 그렇지 않다면 코드를 실행할 때 얻을 수있는 추적을 제공 할 수 있습니까? –