2016-10-23 5 views
3

파이썬은 그 중 하나가 라틴어를 사용하고 다른 하나는 키릴 어를 사용하여 작성 되었기 때문에 МАМАMAMA을 다르게 취급합니다.다른 단어를 사용하여 같은 단어를 탐지합니까?

파이썬으로 그들을 어떻게 하나의 동일한 문자열로 취급하게 만드시겠습니까?

나는 동형만을 염려합니다.

+0

파이썬에서 문자열의'encoding'과'decoding'에 대한 검색 –

+0

@jonrsharpe 비슷하게 생겼지 만 공통점이없는 문자에 대해서는 질문입니다. 유니 코드 문자열을 ASCII 표현으로 "압축"하는 것이 아닙니다. – vpekar

+0

@vpekar하지만 그건 * 어떻게 * 당신이 그들이 같은 문자열이라고 확신하는지, 그렇지 않으면 당신을 믿지 않을 것입니다. – jonrsharpe

답변

2

음역은 (는 라틴어 R에 키릴 문자 P 변합니다) 도움하지 않을이라는 라틴어 유니 코드 변환에 키릴 할 것입니다 파이썬 라이브러리가있다. 언뜻보기에 유니 코드 호환성 형식 (NFKD 또는 NFKC)은 희망적으로 보입니다.하지만 U + 041C (CYRILLIC CAPITAL LETTER EM)는 U + 041C (U + 004D (라틴 대문자))가 아닙니다. 작업.

유일한 해결책은 자신의 알모폼 표를 작성하고 비교하기 전에 모든 문자열을 표준 형식으로 변환하는 것입니다.

참고 : "키릴 문자 P"라고 말하면 나는 속임수를 사용하고 라틴어 동형을 사용했습니다. 키릴 문자를 입력하는 쉬운 방법이 없습니다.

+0

확인. 감사. 나는 이것이 유일한 방법이라고 생각한다. –

3

transliterate

>>> from transliterate import translit 
>>> 
>>> cy = u'\u041c\u0410\u041c\u0410' 
>>> en = u'MAMA' 
>>> cy == en 
False 
>>> cy_converted = translit(cy, 'ru', reversed=True) 
>>> cy_converted == en 
True 
>>> cy_converted 
u'MAMA' 
+1

"ДРП"를 "DRP"로 간주하지 않겠습니까? OP는 동형이 동등하다고 생각하는 것처럼 들리는 것 같습니다. 이것은 또한 "РАРА"가 "RARA"로 음역 할 것 같은데, 나는 OP가 원하지 않는다고 생각합니다. – Paul

관련 문제