stringprep — Подготовка строк для интернета
Исходный код: Lib/stringprep.py
При идентификации объектов (таких как имена хостов) в интернете часто требуется сравнивать такие идентификаторы на «равенство». Точный способ выполнения этого сравнения может зависеть от предметной области, например, от того, должно ли оно быть регистронезависимым или нет. Также может потребоваться ограничить возможные идентификаторы, разрешая только идентификаторы, состоящие из «печатьных» символов.
RFC 3454 определяет процедуру «подготовки» строк Юникода в интернет-протоколах. Перед передачей строк по сети они обрабатываются процедурой подготовки, после чего они имеют определённую нормализованную форму. RFC определяет набор таблиц, которые могут быть объединены в профили. Каждый профиль должен определить, какие таблицы он использует и какие другие необязательные части процедуры stringprep являются частью профиля. Примером профиля stringprep является nameprep, который используется для интернационализованных доменных имён.
Модуль stringprep экспонирует только таблицы из RFC 3454. Поскольку эти таблицы очень велики для представления их в виде словарей или списков, модуль использует базу данных символов Юникода во внутренней работе. Сам исходный код модуля был сгенерирован с помощью утилиты mkstringprep.py.
В результате эти таблицы экспонируются как функции, а не как структуры данных. В RFC существуют два типа таблиц: множества и отображения. Для множества stringprep предоставляет «характеристическую функцию», то есть функцию, которая возвращает True если параметр является частью множества. Для отображений он предоставляет функцию отображения: учитывая ключ, она возвращает соответствующее значение. Ниже приведён список всех функций, доступных в модуле.
-
stringprep.in_table_a1(code) -
Определяет, входит ли code в таблицу A.1 (Неназначенные кодовые точки в Юникоде 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.10/library/stringprep.html