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

更新於: 2019-07-30

270 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.