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

stringprep.md

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

1> **Источник:** https://python-all.ru/3.11/library/stringprep.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`stringprep`](https://python-all.ru/3.11/library/stringprep.html#module-stringprep) – Подготовка строк интернета89**Исходный код:** [Lib/stringprep.py](https://python-all.ru/src/3.11/Lib/stringprep.py)1011---1213При идентификации различных сущностей в интернете (например, имён хостов) часто возникает необходимость сравнивать такие идентификаторы на «равенство». Конкретный способ выполнения такого сравнения может зависеть от прикладной области – например, учитывать регистр символов или нет. Кроме того, может потребоваться ограничить набор допустимых идентификаторов, разрешив только те, которые состоят из «печатных» символов.1415[**RFC 3454**](https://python-all.ru/3.11/library/stringprep.html) определяет процедуру «подготовки» строк Unicode в интернет-протоколах. Прежде чем передавать строки по сети, они обрабатываются этой процедурой, после чего приобретают определённую нормализованную форму. RFC определяет набор таблиц, которые можно объединять в профили. Каждый профиль должен указывать, какие таблицы он использует и какие дополнительные части процедуры `stringprep` в него входят. Примером профиля `stringprep` служит `nameprep`, который используется для интернационализированных доменных имён.1617Модуль [`stringprep`](https://python-all.ru/3.11/library/stringprep.html#module-stringprep) предоставляет только таблицы из [**RFC 3454**](https://python-all.ru/3.11/library/stringprep.html). Поскольку такие таблицы были бы слишком большими для представления в виде словарей или списков, модуль использует внутреннюю базу данных символов Unicode. Исходный код самого модуля был сгенерирован с помощью утилиты `mkstringprep.py`.1819В результате эти таблицы представлены в виде функций, а не структур данных. В RFC определены два вида таблиц: множества и отображения. Для множества [`stringprep`](https://python-all.ru/3.11/library/stringprep.html#module-stringprep) предоставляет «характеристическую функцию», то есть функцию, возвращающую `True`, если параметр принадлежит множеству. Для отображений предоставляется функция отображения: по ключу она возвращает соответствующее значение. Ниже приведён список всех функций, доступных в модуле.2021#### `stringprep.in_table_a1(code)`2223Определяет, находится ли *code* в таблице A.1 (незакреплённые кодовые точки в Unicode 3.2).2425#### `stringprep.in_table_b1(code)`2627Определяет, находится ли *code* в таблице B.1 (обычно отображается в пустую строку).2829#### `stringprep.map_table_b2(code)`3031Возвращает отображённое значение для *code* в соответствии с таблицей B.2 (отображение для приведения к нижнему регистру, используемое с NFKC).3233#### `stringprep.map_table_b3(code)`3435Возвращает отображённое значение для *code* в соответствии с таблицей B.3 (отображение для приведения к нижнему регистру без нормализации).3637#### `stringprep.in_table_c11(code)`3839Определяет, находится ли *code* в таблице C.1.1 (пробельные символы ASCII).4041#### `stringprep.in_table_c12(code)`4243Определяет, находится ли *code* в таблице C.1.2 (не-ASCII пробельные символы).4445#### `stringprep.in_table_c11_c12(code)`4647Определяет, находится ли *code* в таблице C.1 (пробельные символы, объединение C.1.1 и C.1.2).4849#### `stringprep.in_table_c21(code)`5051Определяет, находится ли *code* в таблице C.2.1 (управляющие символы ASCII).5253#### `stringprep.in_table_c22(code)`5455Определяет, находится ли *code* в таблице C.2.2 (не-ASCII управляющие символы).5657#### `stringprep.in_table_c21_c22(code)`5859Определяет, находится ли *code* в таблице C.2 (управляющие символы, объединение C.2.1 и C.2.2).6061#### `stringprep.in_table_c3(code)`6263Определяет, находится ли *code* в таблице C.3 (частное использование).6465#### `stringprep.in_table_c4(code)`6667Определяет, находится ли *code* в таблице C.4 (кодовые точки, не являющиеся символами).6869#### `stringprep.in_table_c5(code)`7071Определяет, находится ли *code* в таблице C.5 (суррогатные коды).7273#### `stringprep.in_table_c6(code)`7475Определяет, находится ли *code* в таблице C.6 (непригодные для обычного текста).7677#### `stringprep.in_table_c7(code)`7879Определяет, находится ли *code* в таблице C.7 (непригодные для канонического представления).8081#### `stringprep.in_table_c8(code)`8283Определяет, находится ли *code* в таблице C.8 (изменяют свойства отображения или устарели).8485#### `stringprep.in_table_c9(code)`8687Определяет, находится ли *code* в таблице C.9 (тегирующие символы).8889#### `stringprep.in_table_d1(code)`9091Определяет, находится ли *code* в таблице D.1 (символы с двунаправленным свойством «R» или «AL»).9293#### `stringprep.in_table_d2(code)`9495Определяет, находится ли *code* в таблице D.2 (символы с двунаправленным свойством «L»).96