API ドキュメントのhttp://docs.python.org/2/library/unicodedata.html#unicodedata.normalize。それは言う
Unicode 文字列unistrの正規形formを返します。フォームの有効な値は、「NFC」、「NFKC」、「NFD」、および「NFKD」です。
ドキュメントはかなり曖昧です。誰かvalid values
がいくつかの例で説明できますか?
API ドキュメントのhttp://docs.python.org/2/library/unicodedata.html#unicodedata.normalize。それは言う
Unicode 文字列unistrの正規形formを返します。フォームの有効な値は、「NFC」、「NFKC」、「NFD」、および「NFKD」です。
ドキュメントはかなり曖昧です。誰かvalid values
がいくつかの例で説明できますか?
ドキュメントはかなり明確ですが、ここにいくつかのコード例を示します。
from unicodedata import normalize
print '%r' % normalize('NFD', u'\u00C7') # decompose: convert Ç to "C + ̧"
print '%r' % normalize('NFC', u'C\u0327') # compose: convert "C + ̧" to Ç
両方の 'D' (=decompose) 形式は、単一の結合文字 ( などä
) を 2 つの文字 ( a
+ 2 つのドット) に変換します。どちらの 'C' (=compose) 形式も逆です。
2 つの「K」形式は、互換性のために Unicode に追加された文字を変換するために使用されます。例えば、記号の周りに丸が描けないソフトに対応するために、①(ユニコード番号2460)のような「丸で囲まれた数字」のセットがあります。これに正規分解 (NFD) を適用しても、何もしません。
print '%r' % normalize('NFD', u'\u2460') # u'\u2460'
ただし、互換性分解 (NFKD) は、対応する「互換性のある」文字を返します。
print '%r' % normalize('NFKD', u'\u2460') # 1
詳細については、 http://en.wikipedia.org/wiki/Unicode_equivalenceを参照してください。