unicodedata
— База данных Юникода¶
Этот модуль предоставляет доступ к базе данных символов Юникода (UCD), которая определяет свойства символов для всех символов Юникода. Данные, содержащиеся в этой базе данных, собраны из UCD version 13.0.0.
Модуль использует те же имена и символы, которые определены в приложении №44 стандарта Unicode, «Unicode Character Database». Он определяет следующие функции:
-
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 для строки Unicode unistr. Допустимыми значениями для формы являются „NFC“, „NFKC“, „NFD“ и „NFKD“.
Стандарт Unicode определяет различные формы нормализации строки Unicode, основанные на определении канонической эквивалентности и эквивалентности совместимости. В Юникоде несколько символов могут быть выражены различными способами. Например, символ 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) сначала применяет разложение на совместимость, а затем каноническую композицию.
Даже если две строки unicode нормализованы и выглядят одинаково для человека, если в одной из них есть объединяющие символы, а в другой - нет, они могут не совпадать.
-
unicodedata.
is_normalized
(form, unistr)¶ Возвращает, является ли строка Unicode unistr нормальной формой 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'
Сноски