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