7.9. unicodedata — Base de données Unicode

This module provides access to the Unicode Character Database which defines character properties for all Unicode characters. The data in this database is based on the UnicodeData.txt file version 5.2.0 which is publicly available from ftp://ftp.unicode.org/.

The module uses the same names and symbols as defined by the UnicodeData File Format 5.2.0 (see https://www.unicode.org/reports/tr44/). It defines the following functions:

unicodedata.lookup(name)

Look up character by name. If a character with the given name is found, return the corresponding Unicode character. If not found, KeyError is raised.

unicodedata.name(unichr[, default])

Returns the name assigned to the Unicode character unichr as a string. If no name is defined, default is returned, or, if not given, ValueError is raised.

unicodedata.decimal(unichr[, default])

Returns the decimal value assigned to the Unicode character unichr as integer. If no such value is defined, default is returned, or, if not given, ValueError is raised.

unicodedata.digit(unichr[, default])

Returns the digit value assigned to the Unicode character unichr as integer. If no such value is defined, default is returned, or, if not given, ValueError is raised.

unicodedata.numeric(unichr[, default])

Returns the numeric value assigned to the Unicode character unichr as float. If no such value is defined, default is returned, or, if not given, ValueError is raised.

unicodedata.category(unichr)

Returns the general category assigned to the Unicode character unichr as string.

unicodedata.bidirectional(unichr)

Returns the bidirectional class assigned to the Unicode character unichr as string. If no such value is defined, an empty string is returned.

unicodedata.combining(unichr)

Returns the canonical combining class assigned to the Unicode character unichr as integer. Returns 0 if no combining class is defined.

unicodedata.east_asian_width(unichr)

Returns the east asian width assigned to the Unicode character unichr as string.

Nouveau dans la version 2.4.

unicodedata.mirrored(unichr)

Returns the mirrored property assigned to the Unicode character unichr as integer. Returns 1 if the character has been identified as a « mirrored » character in bidirectional text, 0 otherwise.

unicodedata.decomposition(unichr)

Returns the character decomposition mapping assigned to the Unicode character unichr as string. An empty string is returned in case no such mapping is defined.

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 alors que l’autre n’en a pas, elles peuvent ne pas être égales lors d’une comparaison.

Nouveau dans la version 2.3.

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.

Nouveau dans la version 2.3.

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

Nouveau dans la version 2.5.

Exemples :

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