22

API ドキュメントのhttp://docs.python.org/2/library/unicodedata.html#unicodedata.normalize。それは言う

Unicode 文字列unistrの正規形formを返します。フォームの有効な値は、「NFC」、「NFKC」、「NFD」、および「NFKD」です。

ドキュメントはかなり曖昧です。誰かvalid valuesがいくつかの例で説明できますか?

4

1 に答える 1

29

ドキュメントはかなり明確ですが、ここにいくつかのコード例を示します。

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を参照してください。

于 2013-02-04T07:56:43.707 に答える