stringprep — Подготовка строк для интернета
Исходный код: Lib/stringprep.py
При идентификации объектов (например, имён хостов) в интернете часто необходимо сравнивать такие идентификаторы на «равенство». Точный способ этого сравнения может зависеть от области применения, например, от того, должно ли сравнение быть регистронезависимым. Также может потребоваться ограничить возможные идентификаторы, разрешая только идентификаторы, состоящие из «печатьных» символов.
RFC 3454 определяет процедуру «подготовки» строк Unicode в интернет-протоколах. Перед передачей строк по сети они обрабатываются процедурой подготовки, после которой они приобретают определённую нормализованную форму. RFC определяет набор таблиц, которые могут быть объединены в профили. Каждый профиль должен определять, какие таблицы он использует и какие другие необязательные части процедуры stringprep являются частью профиля. Пример профиля stringprep — nameprep, который используется для интернационализированных доменных имён.
Модуль stringprep экспонирует только таблицы из RFC 3454. Поскольку эти таблицы очень велики для представления в виде словарей или списков, модуль использует внутренне базу данных символов Unicode. Исходный код модуля был сгенерирован с помощью утилиты mkstringprep.py.
В результате эти таблицы экспонируются как функции, а не как структуры данных. В RFC существуют два типа таблиц: множества и отображения. Для множества stringprep предоставляет «характеристическую функцию», т. е. функцию, которая возвращает True если параметр является частью множества. Для отображений он предоставляет функцию отображения: для данного ключа она возвращает соответствующее значение. Ниже приведен список всех функций, доступных в модуле.
-
stringprep.in_table_a1(code) -
Определяет, находится ли code в таблице A.1 (Неназначенные кодовые точки в Unicode 3.2).
-
stringprep.in_table_b1(code) -
Определяет, находится ли code в таблице B.1 (Обычно отображается как ничего).
-
stringprep.map_table_b2(code) -
Возвращает отображаемое значение для code в соответствии с таблицей B.2 (Отображение для преобразования в нижний регистр, используемое с NFKC).
-
stringprep.map_table_b3(code) -
Возвращает отображаемое значение для code в соответствии с таблицей B.3 (Отображение для преобразования в нижний регистр, используемое без нормализации).
-
stringprep.in_table_c11(code) -
Определяет, находится ли code в таблице C.1.1 (ASCII пробельные символы).
-
stringprep.in_table_c12(code) -
Определяет, находится ли code в таблице C.1.2 (Не-ASCII пробельные символы).
-
stringprep.in_table_c11_c12(code) -
Определяет, находится ли code в таблице C.1 (Пробельные символы, объединение C.1.1 и C.1.2).
-
stringprep.in_table_c21(code) -
Определяет, находится ли code в таблице C.2.1 (ASCII управляющие символы).
-
stringprep.in_table_c22(code) -
Определяет, находится ли code в таблице C.2.2 (Не-ASCII управляющие символы).
-
stringprep.in_table_c21_c22(code) -
Определяет, находится ли code в таблице C.2 (Управляющие символы, объединение C.2.1 и C.2.2).
-
stringprep.in_table_c3(code) -
Определяет, находится ли code в таблице C.3 (Для частного использования).
-
stringprep.in_table_c4(code) -
Определяет, находится ли code в таблице C.4 (Кодовые точки, не являющиеся символами).
-
stringprep.in_table_c5(code) -
Определяет, находится ли code в таблице C.5 (Супплементарные коды).
-
stringprep.in_table_c6(code) -
Определяет, находится ли code в таблице C.6 (Неподходящие для простого текста).
-
stringprep.in_table_c7(code) -
Определяет, находится ли code в таблице C.7 (Неподходящие для канонического представления).
-
stringprep.in_table_c8(code) -
Определяет, находится ли code в таблице C.8 (Изменяют свойства отображения или устаревшие).
-
stringprep.in_table_c9(code) -
Определяет, находится ли code в таблице C.9 (Символы тегов).
-
stringprep.in_table_d1(code) -
Определяет, находится ли code в таблице D.1 (Символы с свойством двунаправленности «R» или «AL»).
-
stringprep.in_table_d2(code) -
Определяет, находится ли code в таблице D.2 (Символы с свойством двунаправленности «L»).
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/stringprep.html