Spec-Zone.ru › Python 3.10

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

Этот модуль предоставляет доступ к базе данных символов Unicode (UCD), которая определяет свойства символов для всех символов Unicode. Данные, содержащиеся в этой базе, скомпилированы из версии UCD 13.0.0 https://www.unicode.org/Public/13.0.0/ucd.

Модуль использует те же имена и символы, что определены в приложении к стандарту 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.is_normalized(form, unistr)

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

Новое в версии 3.8.

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

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

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

2

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

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

Spec-Zone.ru

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