为了识别互联网中的不同事物,有必要比较不同的身份以确保平等。比较过程取决于应用程序域。例如,有些东西不区分大小写,等等。为了检查这类信息,使用了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