6
4

1 回答 1

12

我猜你看到的是连字——专业字体有将几个单独的字符组合成一个(更好看的)字形的字形。所以不是写“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'

请参阅Wikipedia 文章以获取Unicode 中的连字列表

于 2012-02-07T11:25:55.073 回答