unicodedata — База данных Unicode
Этот модуль предоставляет доступ к базе данных символов Юникод (UCD), которая определяет свойства символов для всех символов Юникод. Данные в этой базе данных скомпилированы из версии UCD 15.0.0.
Модуль использует те же имена и символы, что и в Приложении #44 к стандарту Юникод, “База данных символов Юникод”. Он определяет следующие функции:
-
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’.
Стандарт Юникод определяет различные нормальные формы строки Юникод, основанные на определении канонического и совместимого эквивалента. В Юникоде несколько символов могут быть представлены различными способами. Например, символ 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.is_normalized(form, unistr) Возвращает, находится ли строка Юникод unistr в нормальной форме form. Допустимые значения для form — ‘NFC’, ‘NFKC’, ‘NFD’ и ‘NFKD’.
Добавлен в версии 3.8.
Кроме того, модуль предоставляет следующие константы:
-
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'
$ Примечания
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/unicodedata.html