stringprep.md
1> **Источник:** https://python-all.ru/3.1/library/stringprep.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 7.8. `stringprep` – подготовка интернет-строк89При идентификации различных сущностей в интернете (например, имён хостов) часто возникает необходимость сравнивать такие идентификаторы на «равенство». Конкретный способ выполнения такого сравнения может зависеть от прикладной области – например, учитывать регистр символов или нет. Кроме того, может потребоваться ограничить набор допустимых идентификаторов, разрешив только те, которые состоят из «печатных» символов.1011[**RFC 3454**](https://python-all.ru/3.1/library/stringprep.html) определяет процедуру «подготовки» строк Unicode в интернет-протоколах. Перед отправкой строки по сети они обрабатываются процедурой подготовки, после чего они приобретают определенную нормализованную форму. RFC определяет набор таблиц, которые можно комбинировать в профили. Каждый профиль должен указывать, какие таблицы он использует и какие другие необязательные части процедуры `stringprep` входят в профиль. Один из примеров профиля `stringprep` – `nameprep`, который используется для интернационализированных доменных имён.1213Модуль `stringprep` предоставляет только таблицы из RFC 3454. Поскольку эти таблицы были бы слишком большими для представления в виде словарей или списков, модуль использует внутри базу данных символов Unicode. Исходный код самого модуля был сгенерирован с помощью утилиты `mkstringprep.py`.1415В результате эти таблицы представлены в виде функций, а не структур данных. В RFC есть два вида таблиц: множества и отображения. Для множества `stringprep` предоставляет «характеристическую функцию», то есть функцию, возвращающую true, если параметр принадлежит множеству. Для отображений предоставляется функция отображения: по ключу она возвращает соответствующее значение. Ниже приведен список всех функций, доступных в модуле.1617#### `stringprep.in_table_a1(code)`1819Определяет, находится ли2021*code*2223в таблице A.1 (незакреплённые кодовые точки в Unicode 3.2).2425#### `stringprep.in_table_b1(code)`2627Определяет, находится ли2829*code*3031в таблице B.1 (обычно отображается в пустую строку).3233#### `stringprep.map_table_b2(code)`3435Возвращает отображённое значение для3637*code*3839в соответствии с таблицей B.2 (отображение для приведения к нижнему регистру, используемое с NFKC).4041#### `stringprep.map_table_b3(code)`4243Возвращает отображённое значение для4445*code*4647в соответствии с таблицей B.3 (отображение для приведения к нижнему регистру без нормализации).4849#### `stringprep.in_table_c11(code)`5051Определяет, находится ли5253*code*5455в таблице C.1.1 (пробельные символы ASCII).5657#### `stringprep.in_table_c12(code)`5859Определяет, находится ли6061*code*6263в таблице C.1.2 (не-ASCII пробельные символы).6465#### `stringprep.in_table_c11_c12(code)`6667Определяет, находится ли6869*code*7071в таблице C.1 (пробельные символы, объединение C.1.1 и C.1.2).7273#### `stringprep.in_table_c21(code)`7475Определяет, находится ли7677*code*7879в таблице C.2.1 (управляющие символы ASCII).8081#### `stringprep.in_table_c22(code)`8283Определяет, находится ли8485*code*8687в таблице C.2.2 (не-ASCII управляющие символы).8889#### `stringprep.in_table_c21_c22(code)`9091Определяет, находится ли9293*code*9495в таблице C.2 (управляющие символы, объединение C.2.1 и C.2.2).9697#### `stringprep.in_table_c3(code)`9899Определяет, находится ли100101*code*102103в таблице C.3 (частное использование).104105#### `stringprep.in_table_c4(code)`106107Определяет, находится ли108109*code*110111в таблице C.4 (кодовые точки, не являющиеся символами).112113#### `stringprep.in_table_c5(code)`114115Определяет, находится ли116117*code*118119в таблице C.5 (суррогатные коды).120121#### `stringprep.in_table_c6(code)`122123Определяет, находится ли124125*code*126127в таблице C.6 (непригодные для обычного текста).128129#### `stringprep.in_table_c7(code)`130131Определяет, находится ли132133*code*134135в таблице C.7 (непригодные для канонического представления).136137#### `stringprep.in_table_c8(code)`138139Определяет, находится ли140141*code*142143в таблице C.8 (изменяют свойства отображения или устарели).144145#### `stringprep.in_table_c9(code)`146147Определяет, находится ли148149*code*150151в таблице C.9 (тегирующие символы).152153#### `stringprep.in_table_d1(code)`154155Определяет, находится ли156157*code*158159в таблице D.1 (символы с двунаправленным свойством «R» или «AL»).160161#### `stringprep.in_table_d2(code)`162163Определяет, находится ли164165*code*166167в таблице D.2 (символы с двунаправленным свойством «L»).168