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