나는 유사성을 찾으려는 문자열이 많습니다 (각 문자열은 평균 30 자입니다). 나는 간단하고 결과가 좋았으므로 difflib's
SequenceMatcher
이이 작업에 유용하다는 것을 알았습니다. 내가이difflib의 SequenceMatcher가 "정크"문자를 무시합니다.
>>> sm=SequenceMatcher(lambda x:x=='-','hellboy','hell-boy')
>>> sm.ratio()
0: 0.93333333333333335
처럼 hellboy
및 hell-boy
을 비교하지만 나는 그런 말을 ratio of 1.0
즉 100 % 일치를주고 싶다. 위의 함수에서 지정된 쓰레기 문자는 비교를 위해 사용되지 않지만 가장 긴 연속 매칭 하위 시퀀스를 찾는 것을 이해합니다. SequenceMatcher
을 "junk"문자로 무시할 수있는 방법이 있습니까??
그것은 일종의 hackish의를 비교를하기 전에 _junk_ 문자를 제거 할 수없는 이유는 무엇입니까? 그것은 본질적으로 그것들을 무시하는 것과 같습니다. –
예 thats good하지만 나는 단지'difflib' 마법을 수행하고 그것을 없애고 싶다면 다른 함수를 통해 문자열을 먼저 전달하여 모든 쓰레기 문자를 제거해야만 하는지를 알고 싶었습니다. – lovesh