Python Internet字符串准备

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

RFC 3454定义了在通过有线传输之前准备Unicode字符串的过程。经过准备过程后,它们具有一定的标准化形式。

RFC定义了一组表。这些表可以合并为配置文件。例如,有一个stringprep的配置文件是nameprep。在nameprep中,有国际化域名

有两种表,setmappings。如果集合表中存在一个字符,它将返回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