unicodedata — Unicode Database


This module provides access to the Unicode Character Database (UCD) which defines character properties for all Unicode characters. The data contained in this database is compiled from the UCD version 13.0.0.

Модуль використовує ті самі назви та символи, як визначено в стандартному додатку Юнікод №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 як 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 для рядка Unicode unistr. Дійсні значення для форми: «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. Дійсні значення для форми: «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'

Виноски

1

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

2

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