unicodedata — База данных Unicode
Этот модуль предоставляет доступ к базе данных символов Юникода (UCD), которая определяет свойства символов для всех символов Юникода. Данные, содержащиеся в этой базе данных, скомпилированы из версии UCD 11.0.0 http://www.unicode.org/Public/11.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.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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/unicodedata.html