unicodedata
— База данных в Юникоде¶
Этот модуль предоставляет доступ к базе данных символов Unicode (UCD), которая определяет свойства символов для всех символов Unicode. Данные, содержащиеся в этой базе данных, скомпилированы из UCD version 14.0.0.
В модуле используются те же имена и символы, что и в приложении к стандарту Unicode #44, «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 в виде числа с плавающей точкой. Если такое значение не определено, возвращается значение 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“.
Стандарт Unicode определяет различные формы нормализации строки Unicode, основанные на определении канонической эквивалентности и эквивалентности по совместимости. В Unicode несколько символов могут быть выражены различными способами. Например, символ U+00C7 (ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА C С CEDILLA) также может быть выражен в виде последовательности U+0043 (ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА C) И U+0327 (СОЧЕТАНИЕ CEDILLA).
Для каждого символа существует две нормальные формы: нормальная форма C и нормальная форма D. Нормальная форма D (NFD) также известна как каноническая декомпозиция и переводит каждый символ в его разложенную форму. Обычная форма C (NFC) сначала применяет каноническую декомпозицию, затем снова создает предварительно скомбинированные символы.
В дополнение к этим двум формам существуют две дополнительные стандартные формы, основанные на эквивалентности по совместимости. В Unicode поддерживаются определенные символы, которые обычно объединяются с другими символами. Например, U+2160 (РИМСКАЯ ЦИФРА ОДИН) - это на самом деле то же самое, что U+0049 (латинская ЗАГЛАВНАЯ БУКВА I). Однако он поддерживается в Unicode для совместимости с существующими наборами символов (например, gb2312).
В обычной форме KD (NFKD) будет применена декомпозиция совместимости, т.е. заменены все символы совместимости на их эквиваленты. В обычной форме KC (NFKC) сначала применяется декомпозиция совместимости, а затем каноническая композиция.
Даже если две строки в юникоде нормализованы и выглядят одинаково для обычного читателя, если в одной из них есть комбинирующие символы, а в другой - нет, они могут не совпадать.
- unicodedata.is_normalized(form, unistr)¶
Возвращает, соответствует ли строка Юникода 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'
Сноски