我有一个文本内容,这是从一个pdf文件转换。文本中有一些不需要的字符,我想将它们转换为utf-8字符。
例如,“人工免疫系统”被转换成“Artifi_cial免疫系统”。fi_被转换成一个字符,我使用gdex来学习字符的ascii值,但是我不知道如何用所有内容中的真实值来替换它。
发布于 2012-02-07 11:25:55
我猜你看到的是 --专业字体有把几个字符组合成一个(更好看的)字形的字体。因此,字体没有写"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'参考Wikipedia article获得一个list of ligatures in Unicode。
https://stackoverflow.com/questions/9175073
复制相似问题