Comment la fonction `unicodedata.normalize()` de Python simplifie-t-elle les représentations Unicode ?

DDD
Libérer: 2024-11-22 16:12:15
original
182 Les gens l'ont consulté

How Does Python's `unicodedata.normalize()` Function Simplify Unicode Representations?

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']
Copier après la connexion

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'
Copier après la connexion

À l'inverse, . normalize('NFD') renvoie la forme décomposée :

print(ascii(unicodedata.normalize('NFD', '\u00E1')))  # Output: 'a\u0301'
Copier après la connexion

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'
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal