Spec-Zone.ru › Python 3.5

unicodedata — База данных Unicode

Этот модуль предоставляет доступ к базе данных символов Unicode (UCD), которая определяет свойства символов для всех символов Unicode. Данные, содержащиеся в этой базе, скомпилированы из версии UCD версии 8.0.0.

Модуль использует те же имена и символы, что и определены в Приложении к стандарту Unicode #44, “База данных символов Unicode”. Он определяет следующие функции:

unicodedata.lookup(name)

Поиск символа по имени. Если символ с заданным именем найден, возвращает соответствующий символ. Если не найден, возникает KeyError.

Изменено в версии 3.3: Добавлена поддержка псевдонимов имен [1] и именованных последовательностей [2].

unicodedata.name(chr[, default])

Возвращает имя, присвоенное символу chr, в виде строки. Если имя не определено, возвращается default, или, если не указано, возникает ValueError.

unicodedata.decimal(chr[, default])

Возвращает десятичное значение, присвоенное символу chr, как целое число. Если такое значение не определено, возвращается default, или, если не указано, возникает ValueError.

unicodedata.digit(chr[, default])

Возвращает значение цифры, присвоенное символу chr, как целое число. Если такое значение не определено, возвращается default, или, если не указано, возникает ValueError.

unicodedata.numeric(chr[, default])

Возвращает числовое значение, присвоенное символу chr, как число с плавающей запятой. Если такое значение не определено, возвращается default, или, если не указано, возникает ValueError.

unicodedata.category(chr)

Возвращает общую категорию, присвоенную символу chr, как строку.

unicodedata.bidirectional(chr)

Возвращает бинаро-направленный класс, присвоенный символу chr, как строку. Если такое значение не определено, возвращается пустая строка.

unicodedata.combining(chr)

Возвращает канонический класс объединения, присвоенный символу chr, как целое число. Возвращает 0 если класс объединения не определен.

unicodedata.east_asian_width(chr)

Возвращает ширину восточноазиатского символа, присвоенную символу chr, как строку.

unicodedata.mirrored(chr)

Возвращает свойство отражения, присвоенное символу chr, как целое число. Возвращает 1 если символ был идентифицирован как «отраженный» символ в двунаправленном тексте, 0 в противном случае.

unicodedata.decomposition(chr)

Возвращает отображение разложения символа, присвоенное символу chr, как строку. Возвращается пустая строка, если такое отображение не определено.

unicodedata.normalize(form, unistr)

Возвращает нормальную форму form для строки Unicode unistr. Допустимые значения для form — ‘NFC’, ‘NFKC’, ‘NFD’ и ‘NFKD’.

Стандарт Unicode определяет различные нормальные формы строки Unicode на основе определения канонического эквивалентности и эквивалентности совместимости. В Unicode несколько символов могут быть выражены различными способами. Например, символ U+00C7 (ЗАГЛАВНАЯ ЛАТИНСКАЯ БУКВА C С ЦЕДИЛЬЮ) также может быть выражен как последовательность U+0043 (ЗАГЛАВНАЯ ЛАТИНСКАЯ БУКВА C) U+0327 (КОМБИНИРУЮЩАЯ ЦЕДИЛЬЯ).

Для каждого символа существуют две нормальные формы: нормальная форма C и нормальная форма D. Нормальная форма D (NFD) также известна как каноническое разложение и переводит каждый символ в его разложенную форму. Нормальная форма C (NFC) сначала применяет каноническое разложение, а затем снова объединяет предварительно объединённые символы.

В дополнение к этим двум формам существуют две дополнительные нормальные формы на основе эквивалентности совместимости. В Unicode поддерживаются определённые символы, которые обычно объединялись бы с другими символами. Например, U+2160 (РИМСКАЯ ЦИФРА ОДИН) фактически то же самое, что и U+0049 (ЗАГЛАВНАЯ ЛАТИНСКАЯ БУКВА I). Однако он поддерживается в Unicode для совместимости с существующими наборами символов (например, gb2312).

Нормальная форма KD (NFKD) применит разложение совместимости, то есть заменит все символы совместимости их эквивалентами. Нормальная форма KC (NFKC) сначала применяет разложение совместимости, а затем каноническое объединение.

Даже если две строки Unicode нормализованы и выглядят одинаково для человека, если одна содержит комбинирующие символы, а другая нет, они могут не сравниваться равными.

Кроме того, модуль предоставляет следующую константу:

unicodedata.unidata_version

Версия базы данных Unicode, используемой в этом модуле.

unicodedata.ucd_3_2_0

Это объект, у которого есть те же методы, что и у всего модуля, но использует версию базы данных Unicode 3.2 вместо этого, для приложений, которым требуется эта конкретная версия базы данных Unicode (например, IDNA).

Примеры:

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

Примечания

[1] http://www.unicode.org/Public/8.0.0/ucd/NameAliases.txt
[2] http://www.unicode.org/Public/8.0.0/ucd/NamedSequences.txt

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/unicodedata.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API