unicodedata — база данных Unicode
Этот модуль предоставляет доступ к базе данных символов Unicode (UCD), которая определяет свойства всех символов Unicode. Данные в этой базе данных скомпилированы на основе версии 15.0.0 UCD.
Модуль использует те же имена и символы, что и стандарт Unicode, приложение № 44, «База данных символов Unicode». В нём определены следующие функции:
-
unicodedata.lookup(name) -
Найти символ по имени. Если символ с указанным именем найден, возвращается соответствующий символ. Если он не найден, вызывается
KeyError.
-
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 (LATIN CAPITAL LETTER C WITH CEDILLA) также может быть представлен последовательностью U+0043 (LATIN CAPITAL LETTER C) U+0327 (COMBINING CEDILLA).
Для каждого символа существуют две нормальные формы: нормальная форма C и нормальная форма D. Нормальная форма D (NFD) также известна как каноническое разложение и преобразует каждый символ в его разложенную форму. Нормальная форма C (NFC) сначала выполняет каноническое разложение, а затем снова объединяет предварительно составные символы.
Помимо этих двух форм, существуют ещё две нормальные формы, основанные на эквивалентности совместимости. В Unicode поддерживаются некоторые символы, которые обычно объединялись бы с другими символами. Например, U+2160 (ROMAN NUMERAL ONE) — это, по сути, тот же символ, что и U+0049 (LATIN CAPITAL LETTER 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 -
Это объект с теми же методами, что и весь модуль, но использующий версию 3.2 базы данных Unicode. Он предназначен для приложений, которым требуется именно эта версия базы данных 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'
Сноски
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/unicodedata.html