Spec-Zone.ru › Python 3.11

unicodedata — База данных Юникода

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

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

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 для строки Юникода unistr. Допустимые значения для form — ‘NFC’, ‘NFKC’, ‘NFD’ и ‘NFKD’.

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

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

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

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

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

unicodedata.is_normalized(form, unistr)

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

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

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

unicodedata.unidata_version

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

unicodedata.ucd_3_2_0

Это объект, имеющий те же методы, что и весь модуль, но использующий версию базы данных Юникода 3.2 вместо неё, для приложений, которым требуется эта конкретная версия базы данных Юникода (например, 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/14.0.0/ucd/NameAliases.txt

2

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

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

Spec-Zone.ru

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