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