unicodedata not python unicode encoding normalization unicode-normalization

python - not - ¿Cómo funciona unicodedata.normalize(form, unistr)?



unicode normalize (1)

Encuentro la documentación bastante clara, pero aquí hay algunos ejemplos de código:

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 Ç

Ambas formas ''D'' (= descomponer) convierten un solo carácter combinado (como ä ) en dos caracteres ( a + dos puntos). Ambas formas ''C'' (= componer) hacen lo contrario.

Las dos formas "K" se utilizan para convertir los caracteres agregados a Unicode por motivos de compatibilidad. Por ejemplo, para admitir software que no puede dibujar círculos alrededor de símbolos, hay un conjunto de "números en círculo", como ① (número de Unicode 2460). Cuando le aplicamos la descomposición canónica (NFD), no hace nada:

print ''%r'' % normalize(''NFD'', u''/u2460'') # u''/u2460''

Sin embargo, la descomposición de compatibilidad (NFKD) devolverá el correspondiente carácter "compatible":

print ''%r'' % normalize(''NFKD'', u''/u2460'') # 1

Ver http://en.wikipedia.org/wiki/Unicode_equivalence para más detalles.

En la documentación de la API, http://docs.python.org/2/library/unicodedata.html#unicodedata.normalize . Dice

Devuelve el formulario normal para la cadena Unicode unistr . Los valores válidos para la forma son ''NFC'', ''NFKC'', ''NFD'' y ''NFKD''.

La documentación es bastante vaga, ¿puede alguien explicar los valid values con algunos ejemplos?