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?
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.