Модуль unicodedata
обеспечивает доступ к базе данных символов Unicode (UCD), которая определяет свойства символов для всех символов Unicode.
Модуль unicodedata
использует те же имена и символы, которые определены в Стандартном приложении Unicode № 44 "База данных символов Unicode" .
Изменено в Python 3.11. База данных Unicode обновлена до версии 14.0.0.
Изменено в Python 3.12. База данных Unicode обновлена до версии 15.0.0.
unicodedata.lookup()
,unicodedata.name()
,unicodedata.decimal()
,unicodedata.digit()
,unicodedata.numeric()
,unicodedata.category()
,unicodedata.bidirectional()
,unicodedata.combining()
,unicodedata.east_asian_width()
,unicodedata.mirrored()
,unicodedata.decomposition()
,unicodedata.normalize()
,unicodedata.is_normalized()
,unicodedata.unidata_version
,unicodedata.ucd_3_2_0
.import unicodedata unicodedata.function_name() import unicodedata as ucd ucd.function_name() from unicodedata import function_name function_name()
unicodedata.lookup(name)
:Функция lookup()
производит поиск символа Unicode по имени. Если найден символ с указанным name
именем, то lookup()
вернет соответствующий символ. Если не найден, то поднимается исключение KeyError
.
>>> from unicodedata import lookup >>> lookup('CYRILLIC SMALL LETTER A') # 'а'
unicodedata.name(chr[, default])
:Функция name()
возвращает имя, присвоенное символу chr
в виде строки. Если имя не определено, возвращается значение, заданное по умолчанию default
или, если не указано, вызывается исключение ValueError
.
>>> from unicodedata import name >>> name('А') # 'CYRILLIC CAPITAL LETTER A' >>> name('1') # 'DIGIT ONE'
unicodedata.decimal(chr[, default])
:Функция decimal()
возвращает десятичное значение, назначенное символу chr
, как целое число. Если такое значение не определено, возвращается значение, заданное по умолчанию или, если не задано, вызывается исключение ValueError
.
>>> from unicodedata import decimal >>> decimal('7') # 7 >>> decimal('a', False) # False
unicodedata.digit(chr[, default])
:Функция digit()
возвращает цифровое значение, назначенное символу chr
, как целое число. Если такое значение не определено, возвращается значение, заданное по умолчанию или, если не задано, вызывается исключение ValueError
.
>>> from unicodedata import digit >>> digit('9') # >>> digit('f', False) # False
unicodedata.numeric(chr[, default])
:Функция numeric()
возвращает числовое значение, назначенное символу chr
, как float. Если такое значение не определено, возвращается значение, заданное по умолчанию или, если не задано, вызывается исключение ValueError
.
>>> from unicodedata import numeric >>> numeric('5') # 5.0 >>> numeric('z', False) # False
unicodedata.category(chr)
:Функция category()
возвращает общую категорию, назначенную символу chr
в виде строки.
>>> from unicodedata import category >>> category('3') # 'Nd' >>> category('z') # 'Ll'
unicodedata.bidirectional(chr)
:Функция bidirectional()
возвращает двунаправленный класс, назначенный символу chr
в виде строки. Если такое значение не определено, возвращается пустая строка.
>>> from unicodedata import bidirectional >>> bidirectional('1') # 'EN' >>> bidirectional('+') # 'ES'
unicodedata.combining(chr)
:Функция combining()
возвращает класс канонического объединения, назначенный символу chr
, как целое число. Возвращает 0, если класс объединения не определен.
>>> from unicodedata import combining >>> combining('9') # 0 >>> combining('=') # 0
unicodedata.east_asian_width(chr)
:Функция east_asian_width()
возвращает восточно-азиатскую ширину, назначенную символу chr
в виде строки.
>>> from unicodedata import east_asian_width >>> east_asian_width('V') # 'Na' >>> east_asian_width('Ю') # 'A'
unicodedata.mirrored(chr)
:Функция mirrored()
возвращает зеркальное свойство, назначенное символу chr
, как целое число. Возвращает 1
, если символ был идентифицирован как "зеркальный" в двунаправленном тексте, 0
в противном случае.
>>> from unicodedata import mirrored >>> mirrored('=') # 0
unicodedata.decomposition(chr)
:Функция decomposition()
возвращает отображение декомпозиции символа, назначенное символу chr
в виде строки. Возвращается пустая строка, если такое отображение не определено.
>>> from unicodedata import decomposition >>> decomposition('=') # '' >>> decomposition('ф') # ''
unicodedata.normalize(form, unistr)
:Функция normalize()
возвращает нормальную форму form
для строки Unicode unistr
. Допустимые значения для формы: 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 нормализованы и выглядят одинаково для человека, если одна имеет комбинированные символы, а другая нет, они могут не совпадать.
>>> from unicodedata import normalize >>> normalize('NFC', 'Й') # 'Й' >>> normalize('NFD', 'Й') # 'Й'
unicodedata.is_normalized(form, unistr)
:Функция is_normalized()
проверяет, возвращает ли Unicode строка unistr
в нормальной форме form
. Допустимые значения для формы: NFC
, NFKC
, NFD
и NFKD
.
>>> from unicodedata import is_normalized >>> is_normalized('NFD', 'Й') # False >>> is_normalized('NFD', 'ф') # True
unicodedata.unidata_version
:Константа unidata_version
возвращает Версия базы данных Unicode, используемая в этом модуле.
>>> from unicodedata import unidata_version >>> unidata_version # '9.0.0'
unicodedata.ucd_3_2_0
:Класс ucd_3_2_0
- это объект, который имеет те же методы, что и весь модуль, но вместо этого использует базу данных Unicode версии 3.2 для приложений, которым требуется эта конкретная версия базы данных Unicode (например, IDNA).
>>> from unicodedata import ucd_3_2_0 >>> ucd_3_2_0.name('э', False) # 'CYRILLIC SMALL LETTER E' >>> ucd_3_2_0.name('е', False) # 'CYRILLIC SMALL LETTER IE'
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 # 'L'etter, 'u'ppercase unicodedata.category('A') # 'Lu' # 'A'rabic, 'N'umber unicodedata.bidirectional('\u0660') # 'AN'