我有一段文本内容,是从PDF文件转换而来的。在文本中有一些不需要的字符,我希望将它们转换为UTF-8字符。
例如,“Artificial Immune System”被转换为“Artificial Immune System”。fi 被转换为一个字符,我使用了 gdex
来学习该字符的 ascii
值,但我不知道如何在所有内容中替换为实际值。
我猜你看到的是连字体 - 专业的字体有一些字符组合成单个(更好看的)字形的字形。所以,字体不再用两个字形"f"和"i"来呈现,而是使用一个单独的"fi"字形。将“fi”(两个字母)与“fi”(单个字形)进行比较。
在Python中,您可以使用unicodedata
模块来处理 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'