# `unicodedata` --- Unicode Database

This module provides access to the Unicode Character Database (UCD) which defines character properties for all Unicode characters. The data contained in this database is compiled from the UCD version 15.1.0.

The module uses the same names and symbols as defined by Unicode Standard Annex #44, "Unicode Character Database". It defines the following functions:

unicodedata.lookup(name)

  Retrouver un caractère par nom. Si un caractère avec le nom donné est trouvé, renvoyer le caractère correspondant. S'il n'est pas trouvé, `KeyError` est levée.

  Modifié dans la version 3.3: La gestion des alias [1] et des séquences nommées [2] a été ajouté.

unicodedata.name(chr[, default])

  Renvoie le nom assigné au caractère chr comme une chaîne de caractères. Si aucun nom n'est défini, default est renvoyé, ou, si ce dernier n'est pas renseigné `ValueError` est levée.

unicodedata.decimal(chr[, default])

  Renvoie la valeur décimale assignée au caractère chr comme un entier. Si aucune valeur de ce type n'est définie, default est renvoyé, ou, si ce dernier n'est pas renseigné, `ValueError` est levée.

unicodedata.digit(chr[, default])

  Renvoie le chiffre assigné au caractère chr comme un entier. Si aucune valeur de ce type n'est définie, default est renvoyé, ou, si ce dernier n'est pas renseigné, `ValueError` est levée.

unicodedata.numeric(chr[, default])

  Renvoie la valeur numérique assignée au caractère chr comme un entier. Si aucune valeur de ce type n'est définie, default est renvoyé, ou, si ce dernier n'est pas renseigné, `ValueError` est levée.

unicodedata.category(chr)

  Renvoie la catégorie générale assignée au caractère chr comme une chaîne de caractères.

unicodedata.bidirectional(chr)

  Renvoie la classe bidirectionnelle assignée au caractère chr comme une chaîne de caractères. Si aucune valeur de ce type n'est définie, une chaîne de caractères vide est renvoyée.

unicodedata.combining(chr)

  Renvoie la classe de combinaison canonique assignée au caractère chr comme un entier. Envoie `0` si aucune classe de combinaison n'est définie.

unicodedata.east_asian_width(chr)

  Renvoie la largeur est-asiatique assignée à un caractère chr comme une chaîne de caractères.

unicodedata.mirrored(chr)

  Renvoie la propriété miroir assignée au caractère chr comme un entier. Renvoie `1` si le caractère a été identifié comme un caractère "réfléchi" dans du texte bidirectionnel, sinon `0`.

unicodedata.decomposition(chr)

  Renvoie le tableau associatif de décomposition de caractère assigné au caractère chr comme une chaîne de caractères. Une chaîne de caractère vide est renvoyée dans le cas où aucun tableau associatif de ce type n'est défini.

unicodedata.normalize(form, unistr)

  Renvoie la forme normale form de la chaîne de caractère Unicode unistr. Les valeurs valides de form sont NFC, NFKC, NFD, et NFKD.

  Le standard Unicode définit les différentes variantes de normalisation d'une chaîne de caractères Unicode en se basant sur les définitions d'équivalence canonique et d'équivalence de compatibilité. En Unicode, plusieurs caractères peuvent être exprimés de différentes façons. Par exemple, le caractère U+00C7 (LATIN CAPITAL LETTER C WITH CEDILLA) peut aussi être exprimé comme la séquence U+0043 (LATIN CAPITAL LETTER C) U+0327 (COMBINING CEDILLA).

  Pour chaque caractère, il existe deux formes normales: la forme normale C et la forme normale D. La forme normale D (NFD) est aussi appelée décomposition canonique, et traduit chaque caractère dans sa forme décomposée. La forme normale C (NFC) applique d'abord la décomposition canonique, puis compose à nouveau les caractères pré-combinés.

  En plus de ces deux formes, il existe deux formes nominales basées sur l'équivalence de compatibilité. En Unicode, certains caractères sont gérés alors qu'ils sont normalement unifiés avec d'autres caractères. Par exemple, U+2160 (ROMAN NUMERAL ONE) est vraiment la même chose que U+0049 (LATIN CAPITAL LETTER I). Cependant, ce caractère est supporté par souci de compatibilité avec les jeux de caractères existants (par exemple gb2312).

  La forme normale KD (NFKD) applique la décomposition de compatibilité, c'est-à-dire remplacer les caractères de compatibilités avec leurs équivalents. La forme normale KC (NFKC) applique d'abord la décomposition de compatibilité, puis applique la composition canonique.

  Même si deux chaînes de caractères Unicode sont normalisées et ont la même apparence pour un lecteur humain , si un a des caractères combinés et l'autre n'en a pas, elles peuvent ne pas être égales lors d'une comparaison.

unicodedata.is_normalized(form, unistr)

  Return whether the Unicode string unistr is in the normal form form. Valid values for form are 'NFC', 'NFKC', 'NFD', and 'NFKD'.

  Ajouté dans la version 3.8.

De plus, ce module expose la constante suivante :

unicodedata.unidata_version

  La version de la base de données Unicode utilisée dans ce module.

unicodedata.ucd_3_2_0

  Ceci est un objet qui a les mêmes méthodes que le module, mais qui utilise la version 3.2 de la base de données Unicode, pour les applications qui nécessitent cette version spécifique de la base de données Unicode (comme l'IDNA).

Exemples :

    >>> import unicodedata
    >>> unicodedata.lookup('LEFT CURLY BRACKET')
    '{'
    >>> unicodedata.name('/')
    'SOLIDUS'
    >>> unicodedata.decimal('9')
    9
    >>> unicodedata.decimal('a')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: not a decimal
    >>> unicodedata.category('A')  # 'L'etter, 'u'ppercase
    'Lu'
    >>> unicodedata.bidirectional('\u0660') # 'A'rabic, 'N'umber
    'AN'

Notes

[1]

https://www.unicode.org/Public/15.1.0/ucd/NameAliases.txt

[2]

https://www.unicode.org/Public/15.1.0/ucd/NamedSequences.txt