3
我有一個文本內容從pdf文件轉換而來。文本中有一些不需要的字符,我想將它們轉換爲utf-8字符。將十六進制字符(連字)轉換爲utf-8字符
例如; '人工免疫系統'轉換爲'Arti fi cial免疫系統'。 fi被轉換爲一個字符,我使用gdex
來了解字符的ascii
值,但我不知道如何用所有內容中的實際值替換它。
我有一個文本內容從pdf文件轉換而來。文本中有一些不需要的字符,我想將它們轉換爲utf-8字符。將十六進制字符(連字)轉換爲utf-8字符
例如; '人工免疫系統'轉換爲'Arti fi cial免疫系統'。 fi被轉換爲一個字符,我使用gdex
來了解字符的ascii
值,但我不知道如何用所有內容中的實際值替換它。
我猜你看到的是ligatures - 專業字體有幾個單獨的字符組合成單個(更好看)字形的glyps。因此,不是將「f」和「i」寫成兩個字形,而是使用單個「fi」字形。比較「fi」(兩個字母)和「fi」(單個字形)。
在Python中,您可以使用unicodedata
module來處理晚期的Unicode文本。您也可以利用轉換爲NFKD正常形態分裂連字:
>>> import unicodedata
>>> unicodedata.name(u'\uFB01')
'LATIN SMALL LIGATURE FI'
>>> unicodedata.normalize("NFKD", u'Arti\uFB01cial Immune System')
u'Artificial Immune System'
因此,與NFKD您的正常化應該弦一起幫助你。如果你發現這個分裂太多了,那麼我的建議是讓你想分裂,手動替換連字連字的小映射表:
>>> ligatures = {0xFB00: u'ff', 0xFB01: u'fi'}
>>> u'Arti\uFB01cial Immune System'.translate(ligatures)
u'Artificial Immune System'