unicodedata — База данных Юникода
Этот модуль предоставляет доступ к базе данных символов Юникода (UCD), которая определяет свойства символов для всех символов Юникода. Данные, содержащиеся в этой базе данных, скомпилированы из версии UCD 12.1.0.
Модуль использует те же имена и символы, что и в Приложении к стандарту Юникод #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'
Примечания
-
1 -
2
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/unicodedata.html