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