เพื่อระบุสิ่งต่าง ๆ ในอินเทอร์เน็ต จำเป็นต้องเปรียบเทียบการระบุที่แตกต่างกันเพื่อความเท่าเทียมกัน ขั้นตอนการเปรียบเทียบขึ้นอยู่กับโดเมนของแอปพลิเคชัน ตัวอย่างเช่น บางสิ่งไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ เป็นต้น เพื่อตรวจสอบข้อมูลประเภทนี้ stringprep ถูกนำมาใช้
RFC 3454 กำหนดขั้นตอนเพื่อเตรียมสตริง Unicode ก่อนส่งผ่านสาย หลังจากผ่านขั้นตอนการเตรียมการแล้วจะมีรูปแบบปกติบางอย่าง
RFC กำหนดชุดของตาราง ตารางเหล่านี้สามารถรวมกันเป็นโปรไฟล์ได้ ตัวอย่างเช่น มีโปรไฟล์ของ stringprep คือ nameprep . ใน nameprep , มีชื่อโดเมนสากล
ตารางมี 2 แบบ คือ set และ การแมป . หากมีอักขระหนึ่งตัวในตารางชุด อักขระนั้นจะส่งคืนค่าจริง มิฉะนั้น จะเป็นเท็จ สำหรับตารางการแมป เมื่อส่งคีย์ มันจะคืนค่าที่เกี่ยวข้อง
ในการใช้โมดูลนี้ เราจำเป็นต้องนำเข้า 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 Space |
7 | stringprep.in_table_c11_c12(code) การรวมกันของอักขระ ASCII และที่ไม่ใช่ ASCII Space |
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