2012-02-07 2 views
3

pdf 파일에서 변환되는 텍스트 내용이 있습니다. 텍스트에 원하지 않는 문자가 있고 utf-8 문자로 변환하려고합니다.16 진수 (합자)를 utf-8 문자로 변환

예를 들면; 'Artificial Immune System'은 'Arti fi cial Immune System'과 같이 변환됩니다. fi은 한 문자처럼 변환되며 문자의 ascii 값을 알아 내기 위해 gdex을 사용했지만 모든 내용의 실제 값으로 바꾸는 방법을 모르겠습니다.

답변

5

내 생각에 당신은 ligatures입니다. 전문 글꼴에는 여러 개의 개별 문자를 하나의 (더 잘 보이는) 글리프로 결합하는 글리프가 있습니다. 따라서 "f"와 "i"를 두 개의 문자 모양으로 쓰는 대신 글꼴에는 단일 "문자 모양"이 있습니다. "fi"(두 글자)와 "fi"(단일 글립)를 비교하십시오.

파이썬에서는 unicodedata module을 사용하여 늦은 유니 코드 텍스트를 조작 할 수 있습니다. 또한 합자를 분할하는 일반적인 양식을 NFKD로의 전환을 악용 할 수 있습니다

>>> import unicodedata 
>>> unicodedata.name(u'\uFB01') 
'LATIN SMALL LIGATURE FI' 
>>> unicodedata.normalize("NFKD", u'Arti\uFB01cial Immune System') 
u'Artificial Immune System' 

그래서 NFKD로 문자열을 정상화하는 것은 당신을 따라 도움이 될 것입니다. list of ligatures in Unicode를 얻을 수

>>> ligatures = {0xFB00: u'ff', 0xFB01: u'fi'} 
>>> u'Arti\uFB01cial Immune System'.translate(ligatures) 
u'Artificial Immune System' 

Wikipedia article 참조 :이 너무 많이 분할 찾을 경우, 최선의 제안은 분할 수동으로 합자를 교체 할 합자의 작은 매핑 테이블을 만드는 것입니다.

관련 문제