unicodedata
— База данных Юникод¶
Модуль предоставляет доступ к базе данных символов Юникода (UCD, Unicode Character Database), которая определяет свойства символа для всех символов Юникода. Данные, содержащиеся в этой базе данных, компилируются из 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] | http://www.unicode.org/Public/12.1.0/ucd/NameAliases.txt |
[2] | http://www.unicode.org/Public/12.1.0/ucd/NamedSequences.txt |