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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/stringprep.html