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?