为了识别互联网中的不同事物,有必要比较不同的身份以确保平等。比较过程取决于应用程序域。例如,有些东西不区分大小写,等等。为了检查这类信息,使用了stringprep。
RFC 3454定义了在通过有线传输之前准备Unicode字符串的过程。经过准备过程后,它们具有一定的标准化形式。
RFC定义了一组表。这些表可以合并为配置文件。例如,有一个stringprep的配置文件是nameprep。在nameprep中,有国际化域名
有两种表,set和mappings。如果集合表中存在一个字符,它将返回true,否则返回false。对于映射表,当传递键时,它将返回关联的值。
要使用此模块,我们需要在代码中导入stringprep模块。
import stringprep
字符串准备表是-
序号 | 表格和说明 |
---|---|
1 | stringprep.in_table_a1(代码) 它是Unicode 3.2中的未签名代码点 |
2 | stringprep.in_table_b1(代码) 它通常没有映射。 |
3 | stringprep.in_table_b2(代码) 将代码的映射值返回表B.2。NFKC案例折叠的映射。 |
4 | stringprep.in_table_b3(代码) 没有规范化的情况下映射案例折叠。 |
5 | stringprep.in_table_c11(代码) ASCII空格字符 |
6 | stringprep.in_table_c12(代码) 非ASCII空格字符 |
7 | stringprep.in_table_c11_c12(代码) ASCII和非ASCII空格字符的组合 |
8 | stringprep.in_table_c21(代码) ASCII控制字符 |
9 | stringprep.in_table_c22(代码) 非ASCII控制字符 |
10 | stringprep.in_table_c21_c22(代码) ASCII和非ASCII控制字符的组合 |
11 | stringprep.in_table_c3(代码) 私人字符 |
12 | stringprep.in_table_c4(代码) 非字符代码点 |
13 | stringprep.in_table_c5(代码) 替代代码 |
14 | stringprep.in_table_c6(代码) 不适合纯文字字元 |
15 | stringprep.in_table_c7(代码) 不适合规范表示 |
16 | stringprep.in_table_c8(代码) 显示属性更改代码 |
17 | stringprep.in_table_c9(代码) 标记字符 |
18岁 | stringprep.in_table_d1(代码) 具有“ R”和“ AL”双向属性的字符。 |
19 | stringprep.in_table_d2(代码) 具有“ L”双向属性的字符。 |
import stringprep as sp print('\u0020') #The space character print(sp.in_table_c11('\u0020')) #It is inside the ASCII space characters print(sp.in_table_d2('L')) #Letter L has bidirectional property from left to right print(sp.in_table_d1('L')) #Letter L has no bidirectional property for right to left
输出结果
True True False