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