Spec-Zone.ru › Python 3.13

unicodedata — База данных Unicode

Этот модуль предоставляет доступ к базе данных символов Unicode (UCD), в которой определены свойства символов для всех символов Unicode. Данные, содержащиеся в этой базе данных, собраны из версии UCD 15.1.0.

В модуле используются те же имена и символы, что и в приложении № 44 к стандарту Unicode, «База данных символов Unicode». В нём определены следующие функции:

См. также

Руководство по Unicode содержит дополнительную информацию о Unicode и использовании этого модуля.

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, в виде строки. Названия общих категорий состоят из двух букв. Список кодов категорий см. в разделе «Значения общих категорий» документации по базе данных символов Unicode. Например:

>>> unicodedata.category('A')  # 'L'etter, 'u'ppercase
'Lu'
unicodedata.bidirectional(chr)

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

>>> unicodedata.bidirectional('\N{ARABIC-INDIC DIGIT SEVEN}') # 'A'rabic, 'N'umber
'AN'
unicodedata.combining(chr)

Возвращает канонический класс комбинирования, присвоенный символу chr, в виде целого числа. Если класс комбинирования не определён, возвращает 0. Дополнительные сведения см. в разделе «Значения канонических классов комбинирования» базы данных символов Unicode.

unicodedata.east_asian_width(chr)

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

unicodedata.mirrored(chr)

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

>>> unicodedata.mirrored('>')
1
unicodedata.decomposition(chr)

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

>>> unicodedata.decomposition('Ã')
'0041 0303'
unicodedata.normalize(form, unistr)

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

Стандарт Unicode определяет различные формы нормализации строки 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) сначала выполняет каноническую декомпозицию, а затем снова объединяет предварительно составные символы.

Помимо этих двух форм существуют ещё две нормальные формы, основанные на эквивалентности совместимости. В Unicode предусмотрены определённые символы, которые обычно объединялись бы с другими символами. Например, U+2160 (ROMAN NUMERAL ONE) — по сути то же самое, что U+0049 (LATIN CAPITAL LETTER I). Однако этот символ включён в Unicode для совместимости с существующими наборами символов (например, gb2312).

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

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

unicodedata.is_normalized(form, unistr)

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

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

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

unicodedata.unidata_version

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

unicodedata.ucd_3_2_0

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

Сноски

[1]

https://www.unicode.org/Public/15.1.0/ucd/NameAliases.txt

[2]

https://www.unicode.org/Public/15.1.0/ucd/NamedSequences.txt

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/unicodedata.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API