Python 网络字符串准备
为了识别互联网上的不同事物,有必要比较不同的标识符是否相等。比较过程取决于应用领域。例如,某些事物不区分大小写等。要检查这些信息,可以使用stringprep。
RFC 3454 定义了在通过网络传输之前准备 Unicode 字符串的过程。经过准备过程后,它们具有特定的规范化形式。
RFC 定义了一组表格;这些表格可以组合成配置文件。例如,stringprep 的一个配置文件是nameprep。在nameprep中,有国际化域名。
有两种表格,集合和映射。如果一个字符存在于集合表格中,则返回 true,否则返回 false。对于映射表格,当传递键时,它将返回关联的值。
要使用此模块,我们需要在代码中导入stringprep模块。
import stringprep
stringprep 表格如下:
| 序号 | 表格及描述 |
|---|---|
| 1 | stringprep.in_table_a1(code) 它是 Unicode 3.2 中的无符号代码点。 |
| 2 | stringprep.in_table_b1(code) 它通常映射为空。 |
| 3 | stringprep.in_table_b2(code) 返回代码到表 B.2 的映射值。NFKC 大小写折叠的映射。 |
| 4 | stringprep.in_table_b3(code) 不进行规范化的大小写折叠映射。 |
| 5 | stringprep.in_table_c11(code) ASCII 空格字符 |
| 6 | stringprep.in_table_c12(code) 非 ASCII 空格字符 |
| 7 | stringprep.in_table_c11_c12(code) ASCII 和非 ASCII 空格字符的组合 |
| 8 |
stringprep.in_table_c21(code) ASCII 控制字符 |
| 9 | stringprep.in_table_c22(code) 非 ASCII 控制字符 |
| 10 | stringprep.in_table_c21_c22(code) ASCII 和非 ASCII 控制字符的组合 |
| 11 | stringprep.in_table_c3(code) 供私用字符 |
| 12 | stringprep.in_table_c4(code) 非字符代码点 |
| 13 | stringprep.in_table_c5(code) 代理代码 |
| 14 | stringprep.in_table_c6(code) 不适合纯文本字符 |
| 15 | stringprep.in_table_c7(code) 不适合规范表示 |
| 16 |
stringprep.in_table_c8(code) 显示属性更改代码 |
| 17 | stringprep.in_table_c9(code) 标记字符 |
| 18 | stringprep.in_table_d1(code) 具有“R”和“AL”双向属性的字符。 |
| 19 |
stringprep.in_table_d2(code) 具有“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
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP