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, как float. Если такое значение не определено, возвращается 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 (LATIN CAPITAL LETTER C WITH CEDILLA) также может быть выражен как последовательность U+0043 (LATIN CAPITAL LETTER C) U+0327 (COMBINING CEDILLA).
Для каждого символа существует две нормальные формы: нормальная форма C и нормальная форма D. Нормальная форма D (NFD) также известна как каноническое разложение и переводит каждый символ в его разложенную форму. Нормальная форма C (NFC) сначала применяет каноническое разложение, а затем снова составляет предварительно объединенные символы.
В дополнение к этим двум формам существуют две дополнительные нормальные формы, основанные на эквивалентности совместимости. В Юникоде поддерживаются определенные символы, которые обычно объединяются с другими символами. Например, U+2160 (ROMAN NUMERAL ONE) на самом деле то же самое, что U+0049 (LATIN CAPITAL LETTER 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] | NameAliases.txt |
[2] | NamedSequences.txt |