Maison >développement back-end >Tutoriel Python >Comment puis-je normaliser les chaînes Unicode en Python pour garantir une longueur cohérente ?

Comment puis-je normaliser les chaînes Unicode en Python pour garantir une longueur cohérente ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 16:25:11452parcourir

How Can I Normalize Unicode Strings in Python to Ensure Consistent Length?

Normalisation des chaînes Unicode pour des représentations simplifiées

Problème :
En Python, lors de la conversion d'une chaîne contenant des signes diacritiques, tels que "á, " nous observons des incohérences. La longueur de la chaîne est de 1 ou 2 caractères, selon que le signe diacritique est représenté comme un point de code unique ou une séquence de points de code composites.

Solution :
Pour garantir la cohérence normalisation, utilisez la fonction .normalize() du module unicodedata. Cette fonction convertit une chaîne Unicode en sa représentation Normal Form Composed (NFC). Le formulaire NFC combine des caractères composites comme "á" en un seul point de code, éliminant ainsi l'incohérence dans la longueur de la chaîne.

import unicodedata

# Convert to NFC form to combine diacritics
char = "á"
normalized_char = unicodedata.normalize('NFC', char)
print(len(normalized_char))  # Output: 1
print(unicodedata.name(normalized_char))  # Output: LATIN SMALL LETTER A WITH ACUTE

Formulaires de normalisation :
Le module unicodedata propose différents formulaires de normalisation , chacun avec une approche différente de la représentation des personnages :

  • NFC (Normal Form Composé) : Combine les caractères composites en un seul point de code.
  • NFD (Normal Form Decomposed) : Décompose les caractères composites dans leur forme combinée.
  • NFKC (Normal Form Composed Compatibility) : Combine les caractères et remplace les caractères de compatibilité par leur canonique form.
  • NFKD (Normal Form Decomposed Compatibility) : Décompose les caractères et remplace les caractères de compatibilité par leur forme canonique.

Considérations supplémentaires :

  • Sachez que certains personnages composés ne sont pas décomposables et peuvent ne pas donne la même chaîne après normalisation.
  • Référez-vous au tableau d'exclusion de composition Unicode pour comprendre ces exceptions.

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!

Déclaration:
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