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)¶ Определите, находится ли код в таблицеА.1 (Неназначенные кодовые точки в Unicode 3.2).
-
stringprep.
in_table_b1
(code)¶ Определите, находится ли код в таблицеВ.1 (обычно отображается на ничего).
-
stringprep.
map_table_b2
(code)¶ Возвращает сопоставленное значение для code в соответствии с таблицейВ.2 (Сопоставление для сложения регистров, используемое с NFKC).
-
stringprep.
map_table_b3
(code)¶ Возвращает сопоставленное значение для code в соответствии с таблицейВ.3 (Сопоставление для сложения регистров без нормализации).
-
stringprep.
in_table_c11
(code)¶ Определите, находится ли код в таблицеС.1.1 (пробельные символы ASCII).
-
stringprep.
in_table_c12
(code)¶ Определите, находится ли код в таблицеС.1.2 (Пробельные символы, не относящиеся кASCII).
-
stringprep.
in_table_c11_c12
(code)¶ Определите, находится ли код в таблицеС.1 (Пробельные символы, объединение C.1.1 и C.1.2).
-
stringprep.
in_table_c21
(code)¶ Определите, есть ли код в таблицеС.2.1 (управляющие символы ASCII).
-
stringprep.
in_table_c22
(code)¶ Определите, входит ли код в таблицуС.2.2 (Управляющие символы, не входящие в ASCII).
-
stringprep.
in_table_c21_c22
(code)¶ Определите, есть ли код в таблицеС.2 (Управляющие символы, объединение С.2.1 и С.2.2).
-
stringprep.
in_table_c3
(code)¶ Определите, находится ли код в таблицеС.3 (Частное использование).
-
stringprep.
in_table_c4
(code)¶ Определите, есть ли code в таблицеC.4 (Кодовые точки несимволов).
-
stringprep.
in_table_c5
(code)¶ Определите, есть ли код в таблицеС.5 (Суррогатные коды).
-
stringprep.
in_table_c6
(code)¶ Определите, находится ли код в таблицеС.6 (Неуместно для обычного текста).
-
stringprep.
in_table_c7
(code)¶ Определите, находится ли код в таблицеС.7 (Неподходящий для канонического представления).
-
stringprep.
in_table_c8
(code)¶ Определите, находится ли код в таблицеС.8 (Изменяет свойства отображения или является устаревшим).
-
stringprep.
in_table_c9
(code)¶ Определите, есть ли код в таблицеС.9 (Символы тегов).
-
stringprep.
in_table_d1
(code)¶ Определите, находится ли код в таблицеD.1 (Символы с двунаправленным свойством «R» или «AL»).
-
stringprep.
in_table_d2
(code)¶ Определите, находится ли код в таблицеD.2 (Символы с двунаправленным свойством «L»).