unicodedata — База данных Юникода
Этот модуль предоставляет доступ к базе данных символов Юникода (UCD), которая определяет свойства символов для всех символов Юникода. Данные, содержащиеся в этой базе данных, скомпилированы из версии UCD 14.0.0 https://www.unicode.org/Public/14.0.0/ucd.
Модуль использует те же имена и символы, что и в приложении к стандарту Юникод #44, “База данных символов Юникода”. Он определяет следующие функции:
-
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 для строки Юникода 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'
Примечания
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/unicodedata.html