Документация Python неофициальный перевод

unicodedata – база данных Unicodeunicodedata – Unicode Database


Этот модуль предоставляет доступ к базе данных символов Unicode (UCD), которая defines character properties for all Unicode characters. The data contained in this database is compiled from the UCD version 17.0.0.

The module uses the same names and symbols as defined by Unicode Standard Annex #44, “Unicode Character Database”.

См. также

Дополнительную информацию о Unicode и о том, как использовать этот модуль, см. в Unicode HOWTO.

Lookup

lookup(name)

Поиск символа по имени

name(chr)

Возвращает имя, присвоенное символу

Numeric values

decimal(chr)

Десятичное значение символа

digit(chr)

Цифровое значение символа

numeric(chr)

Числовое значение символа

Свойства

bidirectional(chr)

Класс двунаправленности символа

block(chr)

Блок Unicode символа

category(chr)

Общая категория символа

combining(chr)

Канонический комбинирующий класс символа

decomposition(chr)

Отображение разложения символа

east_asian_width(chr)

Восточноазиатская ширина символа

extended_pictographic(chr)

Проверка, обладает ли символ свойством Extended_Pictographic

grapheme_cluster_break(chr)

Свойство Grapheme_Cluster_Break символа

indic_conjunct_break(chr)

Свойство Indic_Conjunct_Break символа

isxidcontinue(chr)

Проверка, является ли символ допустимым продолжением идентификатора

isxidstart(chr)

Проверка, является ли символ допустимым началом идентификатора

mirrored(chr)

Зеркальное свойство символа

Normalization

normalize(form, unistr)

Возвращает нормализованную форму строки

is_normalized(form, unistr)

Проверка, нормализована ли строка Unicode

Text segmentation

iter_graphemes(unistr)

Перебор графемных кластеров в строке

unicodedata.lookup(name, /)

Ищет символ по имени. Если символ с указанным именем найден, возвращает соответствующий символ. Если не найден, возбуждается KeyError. Например:

>>> unicodedata.lookup('LEFT CURLY BRACKET')
'{'

Символы, возвращаемые этой функцией, совпадают с теми, которые создаются управляющей последовательностью \N в строковых литералах. Например:

>>> unicodedata.lookup('MIDDLE DOT') == '\N{MIDDLE DOT}'
True

Изменено в версии 3.3: добавлена поддержка псевдонимов имён [1] и именованных последовательностей [2].

unicodedata.name(chr, default=None, /)

Возвращает имя, присвоенное символу chr, в виде строки. Если имя не определено, возвращается default, а если он не указан, возбуждается ValueError. Например:

>>> unicodedata.name('½')
'VULGAR FRACTION ONE HALF'
>>> unicodedata.name('\uFFFF', 'fallback')
'fallback'
unicodedata.decimal(chr, default=None, /)

Возвращает десятичное значение, присвоенное символу chr, в виде целого числа. Если такое значение не определено, возвращается default, а если он не указан, возбуждается ValueError. Например:

>>> unicodedata.decimal('\N{ARABIC-INDIC DIGIT NINE}')
9
>>> unicodedata.decimal('\N{SUPERSCRIPT NINE}', -1)
-1
unicodedata.digit(chr, default=None, /)

Возвращает значение цифры, присвоенное символу chr, в виде целого числа. Если такое значение не определено, возвращается default, а если он не указан, возбуждается ValueError:

>>> unicodedata.digit('\N{SUPERSCRIPT NINE}')
9
unicodedata.numeric(chr, default=None, /)

Возвращает числовое значение, присвоенное символу chr, в виде числа с плавающей запятой. Если такое значение не определено, возвращается default, а если он не указан, возбуждается ValueError:

>>> unicodedata.numeric('½')
0.5
unicodedata.category(chr, /)

Возвращает общую категорию, присвоенную символу chr, в виде строки. Имена общих категорий состоят из двух букв. Список кодов категорий см. в разделе General Category Values документации базы данных символов Unicode. Например:

>>> unicodedata.category('A')  # 'L' – буква, 'u' – заглавная
'Lu'
unicodedata.bidirectional(chr, /)

Возвращает класс двунаправленности, присвоенный символу chr, в виде строки. Если такое значение не определено, возвращается пустая строка. Список кодов двунаправленности см. в разделе Bidirectional Class Values документации базы данных символов Unicode. Например:

>>> unicodedata.bidirectional('\N{ARABIC-INDIC DIGIT SEVEN}') # 'A' – арабская, 'N' – число
'AN'
unicodedata.combining(chr, /)

Возвращает канонический класс комбинирования, присвоенный символу chr, в виде целого числа. Возвращает 0, если класс комбинирования не определен. Дополнительную информацию см. в разделе Canonical Combining Class Values базы данных символов Unicode.

unicodedata.east_asian_width(chr, /)

Возвращает ширину восточноазиатского символа, присвоенную символу chr, в виде строки. Список значений ширины и дополнительную информацию см. в Unicode Standard Annex #11.

unicodedata.block(chr, /)

Возвращает блок block, назначенный символу chr. Например:

>>> unicodedata.block('S')
'Basic Latin'

Добавлено в версии 3.15.

unicodedata.mirrored(chr, /)

Возвращает свойство зеркальности, присвоенное символу chr, в виде целого числа. Возвращает 1, если символ определен как «зеркальный» в двунаправленном тексте, и 0 в противном случае. Например:

>>> unicodedata.mirrored('>')
1
unicodedata.isxidstart(chr, /)

Возвращает True, если chr является допустимым начальным символом идентификатора согласно Приложению №31 к Стандарту Unicode, то есть имеет свойство XID_Start. В противном случае возвращает False. Например:

>>> unicodedata.isxidstart('S')
True
>>> unicodedata.isxidstart('0')
False

Добавлено в версии 3.15.

unicodedata.isxidcontinue(chr, /)

Возвращает True, если chr является допустимым символом идентификатора согласно Приложению №31 к Стандарту Unicode, то есть имеет свойство XID_Continue. В противном случае возвращает False. Например:

>>> unicodedata.isxidcontinue('S')
True
>>> unicodedata.isxidcontinue(' ')
False

Добавлено в версии 3.15.

unicodedata.decomposition(chr, /)

Возвращает отображение разложения символа, присвоенное символу chr, в виде строки. Если такое отображение не определено, возвращается пустая строка. Например:

>>> unicodedata.decomposition('Ã')
'0041 0303'
unicodedata.grapheme_cluster_break(chr, /)

Возвращает свойство Grapheme_Cluster_Break, назначенное символу.

Добавлено в версии 3.15.

unicodedata.indic_conjunct_break(chr, /)

Возвращает свойство Indic_Conjunct_Break, назначенное символу.

Добавлено в версии 3.15.

unicodedata.extended_pictographic(chr, /)

Возвращает True, если символ имеет свойство Extended_Pictographic, False в противном случае.

Добавлено в версии 3.15.

unicodedata.normalize(form, unistr, /)

Возвращает нормальную форму form для строки Unicode unistr. Допустимые значения form: ‘NFC’, ‘NFKC’, ‘NFD’ и ‘NFKD’.

Стандарт Unicode определяет различные нормальные формы строки Unicode на основе определений канонической эквивалентности и эквивалентности совместимости. В Unicode одни и те же символы могут быть представлены по-разному. Например, символ U+00C7 (ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА C С СЕДИЛЬЮ) может также быть представлен как последовательность U+0043 (ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА C) U+0327 (СОЕДИНИТЕЛЬНАЯ СЕДИЛЬ).

Для каждого символа существует две нормальные формы: форма C и форма D. Нормальная форма D (NFD) также известна как каноническая декомпозиция и преобразует каждый символ в его разложенную форму. Нормальная форма C (NFC) сначала применяет каноническую декомпозицию, а затем снова составляет предварительно составные символы.

В дополнение к этим двум формам существуют ещё две нормальные формы, основанные на совместимой эквивалентности. В Unicode поддерживаются некоторые символы, которые обычно были бы объединены с другими символами. Например, U+2160 (РИМСКАЯ ЦИФРА ОДИН) на самом деле то же самое, что и U+0049 (ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА I). Однако он поддерживается в Unicode для совместимости с существующими наборами символов (например, gb2312).

Нормальная форма KD (NFKD) применяет совместимую декомпозицию, то есть заменяет все совместимые символы на их эквиваленты. Нормальная форма KC (NFKC) сначала применяет совместимую декомпозицию, а затем каноническую композицию.

Даже если две строки Unicode нормализованы и выглядят одинаково для человеческого глаза, но одна содержит комбинируемые символы, а другая нет, они могут не быть равными при сравнении.

unicodedata.is_normalized(form, unistr, /)

Возвращает, находится ли строка Unicode unistr в нормальной форме form. Допустимые значения для form: 'NFC', 'NFKC', 'NFD' и 'NFKD'.

Добавлено в версии 3.8.

unicodedata.iter_graphemes(unistr, start=0, end=sys.maxsize, /)

Возвращает итератор для перебора графемных кластеров. С необязательным start итерация начинается с этой позиции. С необязательным end итерация останавливается на этой позиции.

Преобразование полученного элемента в строку возвращает подстроку, соответствующую графемному кластеру. Его атрибуты start и end обозначают начало и конец графемного кластера.

Он использует расширенные правила графемных кластеров, определённые в Приложении №29 к Стандарту Unicode, «Unicode Text Segmentation».

Добавлено в версии 3.15.

Кроме того, модуль предоставляет следующие константы:

unicodedata.unidata_version

Версия базы данных Unicode, используемая в этом модуле.

unicodedata.ucd_3_2_0

Это объект, который имеет большинство методов всего модуля, но использует версию 3.2 базы данных Unicode для приложений, которым требуется эта конкретная версия базы данных Unicode (например, IDNA).

Сноски