Normalisation d'Unicode en Python : simplification des représentations Unicode
En Python, le module unicodedata fournit la fonction .normalize() pour simplifier les représentations de chaînes Unicode . Cette fonction transforme les entités Unicode décomposées en leurs formes composites les plus simples.
Considérons l'exemple suivant :
import unicodedata char = "á" print(len(char)) # Output: 1 [print(unicodedata.name(c)) for c in char] # Output: ['LATIN SMALL LETTER A WITH ACUTE'] char = "á" print(len(char)) # Output: 2 [print(unicodedata.name(c)) for c in char] # Output: ['LATIN SMALL LETTER A', 'COMBINING ACUTE ACCENT']
Le caractère "á" est composé de deux points de code : U 0061 (LETTRE MINUSCULE LATINE A) et U 0301 (COMBINANT ACCENT AIGU). Décomposés, ces caractères apparaissent comme "á".
Pour normaliser cette chaîne, on peut utiliser .normalize('NFC'), qui renvoie la forme composée :
print(ascii(unicodedata.normalize('NFC', '\u0061\u0301'))) # Output: '\xe1'
À l'inverse, . normalize('NFD') renvoie la forme décomposée :
print(ascii(unicodedata.normalize('NFD', '\u00E1'))) # Output: 'a\u0301'
Des formes de normalisation supplémentaires existent pour gérer les points de code de compatibilité. NFKC et NFKD remplacent les caractères de compatibilité par leurs formes canoniques. Par exemple, U 2160 (CHIFFRE ROMAIN UN) se normalise en « I » en utilisant NFKC :
print(unicodedata.normalize('NFKC', '\u2167')) # Output: 'VIII'
Il est important de noter que la normalisation n'est pas toujours réversible, car certains caractères peuvent ne pas avoir de formes décomposées uniques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!