Документация Python неофициальный перевод

unicodedata.md

108 строк · 9.3 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/unicodedata.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 7.9. [`unicodedata`](https://python-all.ru/2.7/library/unicodedata.html#module-unicodedata) – база данных Unicode89Этот модуль предоставляет доступ к базе данных символов Unicode, которая определяет свойства символов для всех символов Unicode. Данные в этой базе основаны на файле `UnicodeData.txt` версии 5.2.0, который находится в открытом доступе по адресу [ftp://ftp.unicode.org/](ftp://ftp.unicode.org/).1011Модуль использует те же имена и обозначения, что определены в формате файла UnicodeData версии 5.2.0 (см. [https://www.unicode.org/reports/tr44/](https://python-all.ru/2.7/library/unicodedata.html)). Он определяет следующие функции:1213#### `unicodedata.lookup(name)`1415Поиск символа по имени. Если символ с указанным именем найден, возвращается соответствующий символ Unicode. Если не найден, вызывается [`KeyError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.KeyError).1617#### `unicodedata.name(unichr[, default])`1819Возвращает имя, присвоенное символу Unicode *unichr*, в виде строки. Если имя не определено, возвращается *default*, а если он не указан, вызывается [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError).2021#### `unicodedata.decimal(unichr[, default])`2223Возвращает десятичное значение, присвоенное символу Unicode *unichr*, в виде целого числа. Если такое значение не определено, возвращается *default*, а если он не указан, вызывается [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError).2425#### `unicodedata.digit(unichr[, default])`2627Возвращает цифровое значение, присвоенное символу Unicode *unichr*, в виде целого числа. Если такое значение не определено, возвращается *default*, а если он не указан, вызывается [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError).2829#### `unicodedata.numeric(unichr[, default])`3031Возвращает числовое значение, присвоенное символу Unicode *unichr*, в виде числа с плавающей запятой. Если такое значение не определено, возвращается *default*, а если он не указан, вызывается [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError).3233#### `unicodedata.category(unichr)`3435Возвращает общую категорию, присвоенную символу Unicode *unichr*, в виде строки.3637#### `unicodedata.bidirectional(unichr)`3839Возвращает класс двунаправленности, присвоенный символу Unicode *unichr*, в виде строки. Если такое значение не определено, возвращается пустая строка.4041#### `unicodedata.combining(unichr)`4243Возвращает канонический класс комбинирования, присвоенный символу Unicode *unichr*, в виде целого числа. Возвращает `0`, если класс комбинирования не определён.4445#### `unicodedata.east_asian_width(unichr)`4647Возвращает ширину восточноазиатского символа, присвоенную символу Unicode *unichr*, в виде строки.4849Новое в версии 2.4.5051#### `unicodedata.mirrored(unichr)`5253Возвращает свойство зеркальности, присвоенное символу Unicode *unichr*, в виде целого числа. Возвращает `1`, если символ определён как «зеркальный» в двунаправленном тексте, иначе `0`.5455#### `unicodedata.decomposition(unichr)`5657Возвращает отображение разложения символа, присвоенное символу Unicode *unichr*, в виде строки. Возвращается пустая строка, если такое отображение не определено.5859#### `unicodedata.normalize(form, unistr)`6061Возвращает нормальную форму *form* для строки Unicode *unistr*. Допустимые значения *form*: ‘NFC’, ‘NFKC’, ‘NFD’ и ‘NFKD’.6263Стандарт Unicode определяет различные нормальные формы строки Unicode на основе определений канонической эквивалентности и эквивалентности совместимости. В Unicode одни и те же символы могут быть представлены по-разному. Например, символ U+00C7 (ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА C С СЕДИЛЬЮ) может также быть представлен как последовательность U+0043 (ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА C) U+0327 (СОЕДИНИТЕЛЬНАЯ СЕДИЛЬ).6465Для каждого символа существует две нормальные формы: форма C и форма D. Нормальная форма D (NFD) также известна как каноническая декомпозиция и преобразует каждый символ в его разложенную форму. Нормальная форма C (NFC) сначала применяет каноническую декомпозицию, а затем снова составляет предварительно составные символы.6667В дополнение к этим двум формам существуют ещё две нормальные формы, основанные на эквивалентности совместимости. В Unicode поддерживаются некоторые символы, которые обычно были бы объединены с другими символами. Например, U+2160 (РИМСКАЯ ЦИФРА ОДИН) на самом деле то же самое, что U+0049 (ЛАТИНСКАЯ ПРОПИСНАЯ БУКВА I). Однако он поддерживается в Unicode для совместимости с существующими наборами символов (например, gb2312).6869Нормальная форма KD (NFKD) применяет декомпозицию совместимости, то есть заменяет все символы совместимости на их эквиваленты. Нормальная форма KC (NFKC) сначала применяет декомпозицию совместимости, а затем каноническую композицию.7071Даже если две строки Unicode нормализованы и выглядят одинаково для человеческого глаза, но одна содержит комбинируемые символы, а другая нет, они могут не быть равными при сравнении.7273Новое в версии 2.3.7475Кроме того, модуль предоставляет следующую константу:7677#### `unicodedata.unidata_version`7879Версия базы данных Unicode, используемая в этом модуле.8081Новое в версии 2.3.8283#### `unicodedata.ucd_3_2_0`8485Это объект, который имеет те же методы, что и весь модуль, но использует версию базы данных Unicode 3.2 для приложений, которым требуется эта конкретная версия базы данных Unicode (например, IDNA).8687Новое в версии 2.5.8889Примеры:9091```python92>>> import unicodedata93>>> unicodedata.lookup('LEFT CURLY BRACKET')94u'{'95>>> unicodedata.name(u'/')96'SOLIDUS'97>>> unicodedata.decimal(u'9')98999>>> unicodedata.decimal(u'a')100Traceback (most recent call last):101  File "<stdin>", line 1, in <module>102ValueError: not a decimal103>>> unicodedata.category(u'A')  # 'L' – буква, 'u' – заглавная104'Lu'105>>> unicodedata.bidirectional(u'\u0660') # 'A' – арабская, 'N' – число106'AN'107```108