unicodedata — База данных Unicode
Этот модуль предоставляет доступ к базе данных символов Юникода (UCD), которая определяет свойства символов для всех символов Юникода. Данные, содержащиеся в этой базе, скомпилированы из версии UCD 13.0.0 https://www.unicode.org/Public/13.0.0/ucd.
Модуль использует те же имена и символы, что и в Приложении #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 на основе определения канонического эквивалента и эквивалента совместимости. В Юникоде несколько символов могут быть выражены различными способами. Например, символ U+00C7 (ЗАГЛАВНАЯ ЛАТИНСКАЯ БУКВА C С ЦЕДИЛЁЙ) также может быть выражен как последовательность U+0043 (ЗАГЛАВНАЯ ЛАТИНСКАЯ БУКВА C) U+0327 (КОМБИНИРУЮЩАЯ ЦЕДИЛЬЯ).
Для каждого символа существуют две нормальные формы: нормальная форма C и нормальная форма D. Нормальная форма D (NFD) также известна как каноническое разложение и переводит каждый символ в его разложенную форму. Нормальная форма C (NFC) сначала применяет каноническое разложение, а затем вновь комбинирует предварительно объединённые символы.
Помимо этих двух форм, существуют две дополнительные нормальные формы, основанные на эквиваленте совместимости. В Юникоде поддерживаются определённые символы, которые обычно объединяются с другими символами. Например, U+2160 (РИМСКАЯ ЦИФРА ОДИН) на самом деле то же самое, что и U+0049 (ЗАГЛАВНАЯ ЛАТИНСКАЯ БУКВА I). Однако он поддерживается в Юникоде для совместимости со старыми наборами символов (например, 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'
Примечания
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/unicodedata.html