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) -
Определяет, находится ли код в таблице A.1 (неназначенные кодовые точки в Unicode 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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/stringprep.html