Spec-Zone.ru › Python 3.6

unicodedata — База данных Юникода

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

Модуль использует те же имена и символы, что и в приложении Unicode Standard Annex #44, “База данных символов Юникода”. Он определяет следующие функции:

unicodedata.lookup(name)

Поиск символа по имени. Если символ с заданным именем найден, возвращается соответствующий символ. Если не найден, генерируется исключение KeyError.

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

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’.

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

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

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

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

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

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

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/9.0.0/ucd/NameAliases.txt

2

http://www.unicode.org/Public/9.0.0/ucd/NamedSequences.txt

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

Spec-Zone.ru

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