2535 次
1 に答える
12
あなたが見ているのは合字だと思います—プロのフォントには、いくつかの個々の文字を1つの(見栄えの良い)グリフに結合するグリップがあります。したがって、「f」と「i」を2つのグリフとして記述する代わりに、フォントには1つの「fi」グリフがあります。「fi」(2文字)と「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'
Unicodeの合字のリストを取得するには、ウィキペディアの記事を参照してください。
于 2012-02-07T11:25:55.073 に答える