"unicodedata" --- Base de datos Unicode
***************************************

======================================================================

Este módulo proporciona acceso a la base de datos de caracteres
Unicode (UCD), que define las propiedades de todos los caracteres
Unicode. Los datos contenidos en esta base de datos se compilan a
partir de la UCD versión 13.0.0.

El módulo utiliza los mismos nombres y símbolos definidos por el Anexo
#44 del estándar Unicode de la "Base de datos de caracteres Unicode".
Define las siguientes funciones:

unicodedata.lookup(name)

   Busca el carácter por su nombre. Si se encuentra un carácter con el
   nombre proporcionado, retornará el carácter correspondiente. Si no
   se encuentra, se lanza una excepción "KeyError".

   Distinto en la versión 3.3: Se ha agregado soporte para alias de
   nombre [1] y secuencias con nombre [2].

unicodedata.name(chr[, default])

   Retorna el nombre asignado al carácter *chr* como una cadena de
   caracteres. Si no se define ningún nombre, se retorna *default* o,
   si no se proporciona, se lanza una excepción "ValueError".

unicodedata.decimal(chr[, default])

   Retorna el valor decimal asignado al carácter *chr* como un entero.
   Si no se define dicho valor, se retorna *default* o, si no se
   proporciona, se lanza una excepción "ValueError".

unicodedata.digit(chr[, default])

   Retorna el valor del dígito asignado al carácter *chr* como un
   entero. Si no se define dicho valor, se retorna *default* o, si no
   se proporciona, se genera una excepción "ValueError".

unicodedata.numeric(chr[, default])

   Retorna el valor numérico asignado al carácter *chr* como un
   flotante. Si no se define dicho valor, se retorna *default* o, si
   no se proporciona, se lanza una excepción "ValueError".

unicodedata.category(chr)

   Retorna la categoría general asignada al carácter *chr* como una
   cadena de caracteres.

unicodedata.bidirectional(chr)

   Retorna la clase bidireccional asignada al carácter *chr* como una
   cadena de caracteres. Si no se define tal valor, se retorna una
   cadena de caracteres vacía.

unicodedata.combining(chr)

   Retorna la clase de combinación canónica asignada al carácter *chr*
   como un entero. Retorna "0" si no se define ninguna clase de
   combinación.

unicodedata.east_asian_width(chr)

   Retorna el ancho asignado al carácter *chr* para el este asiático
   como una cadena de caracteres.

unicodedata.mirrored(chr)

   Retorna la propiedad reflejada asignada al carácter *chr* como un
   entero. Retorna "1" si el carácter se ha identificado como un
   carácter "reflejado" en texto bidireccional y "0" en caso
   contrario.

unicodedata.decomposition(chr)

   Retorna el mapeo de descomposición de caracteres asignado al
   carácter *chr* como una cadena de caracteres. Se retorna una cadena
   de caracteres vacía en caso de que no se defina tal mapeo.

unicodedata.normalize(form, unistr)

   Retorna la forma normalizada *form* para la cadena Unicode
   *unistr*. Los valores válidos para *form* son 'NFC', 'NFKC', 'NFD'
   y 'NFKD'.

   El estándar Unicode define varias formas de normalización de una
   cadena Unicode, basándose en la definición de equivalencia canónica
   y equivalencia de compatibilidad. En Unicode, varios caracteres se
   pueden expresar de diversas formas. Por ejemplo, el carácter U+00C7
   (LETRA C LATINA MAYÚSCULA CON CEDILLA) también se puede expresar
   con la secuencia U+0043 (LETRA C LATINA MAYÚSCULA) U+0327 (CEDILLA
   COMBINABLE).

   Para cada carácter, hay dos formas normalizadas: la forma normal C
   y la forma normal D. La forma normal D (NFD) también se conoce como
   descomposición canónica y traduce cada carácter a su forma
   descompuesta. La forma normal C (NFC) primero aplica una
   descomposición canónica y luego vuelve a componer los caracteres
   combinados previamente.

   Además de las dos anteriores, hay dos formas normalizadas
   adicionales basadas en la equivalencia de compatibilidad. En
   Unicode, se admiten ciertos caracteres que normalmente se
   unificarán con otros caracteres. Por ejemplo, U+2160 (NUMERAL
   ROMANO UNO) es realmente lo mismo que U+0049 (LETRA LATINA
   MAYÚSCULA I). Sin embargo, esta característica está soportada por
   Unicode para ser compatible con los conjuntos de caracteres
   existentes (por ejemplo, gb2312).

   La forma normalizada KD (NFKD) aplicará la descomposición de
   compatibilidad, es decir, reemplazará todos los caracteres de
   compatibilidad con sus equivalentes. La forma normalizada KC (NFKC)
   primero aplica la descomposición de compatibilidad, seguida de la
   composición canónica.

   Incluso si dos cadenas Unicode están normalizadas y parecen iguales
   para un lector humano, si una tiene caracteres combinados y la otra
   no, es posible que no se comparen como iguales.

unicodedata.is_normalized(form, unistr)

   Retorna si la cadena Unicode *unistr* está en la forma normalizada
   *form*. Los valores válidos para *form* son 'NFC', 'NFKC', 'NFD' y
   'NFKD'.

   Nuevo en la versión 3.8.

Además, el módulo expone las siguientes constantes:

unicodedata.unidata_version

   La versión de la base de datos Unicode usada en este módulo.

unicodedata.ucd_3_2_0

   Este es un objeto que tiene los mismos métodos que el módulo
   completo, pero usa la versión 3.2 de la base de datos Unicode en su
   lugar. Es útil para aplicaciones que requieren esta versión
   específica de la base de datos Unicode (como IDNA).

Ejemplos:

>>> 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'

-[ Notas al pie ]-

[1] https://www.unicode.org/Public/13.0.0/ucd/NameAliases.txt

[2] https://www.unicode.org/Public/13.0.0/ucd/NamedSequences.txt
