# 6.5. `unicodedata` — Base de données Unicode

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

Ce module utilise les mêmes noms et symboles définis dans l’annexe 44 du standard Unicode (Unicode Standard Annex), « Unicode Character Database ». Il définit les fonctions suivantes :

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

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

  http://www.unicode.org/Public/9.0.0/ucd/NameAliases.txt

2

  http://www.unicode.org/Public/9.0.0/ucd/NamedSequences.txt