stringprep
— Preparering av internetsträng¶
Källkod: Lib/stringprep.py
Vid identifiering av saker (t.ex. värdnamn) på internet är det ofta nödvändigt att jämföra sådana identifikationer för ”jämlikhet”. Exakt hur denna jämförelse utförs kan bero på applikationsdomänen, t.ex. om den ska vara skiftlägesokänslig eller inte. Det kan också vara nödvändigt att begränsa de möjliga identifikationerna så att endast identifikationer som består av ”skrivbara” tecken tillåts.
RFC 3454 definierar en procedur för att ”förbereda” Unicode-strängar i Internetprotokoll. Innan strängar skickas ut på kabeln behandlas de med förberedelseproceduren, varefter de har en viss normaliserad form. RFC definierar en uppsättning tabeller som kan kombineras till profiler. Varje profil måste definiera vilka tabeller den använder och vilka andra valfria delar av stringprep
-proceduren som ingår i profilen. Ett exempel på en stringprep
-profil är nameprep
, som används för internationaliserade domännamn.
Modulen stringprep
exponerar endast tabellerna från RFC 3454. Eftersom dessa tabeller skulle vara mycket stora att representera som lexikon eller listor, använder modulen Unicodes teckendatabas internt. Själva modulens källkod genererades med hjälp av verktyget mkstringprep.py
.
Därför exponeras dessa tabeller som funktioner, inte som datastrukturer. Det finns två typer av tabeller i RFC: uppsättningar och mappningar. För en uppsättning tillhandahåller stringprep
den ”karakteristiska funktionen”, dvs. en funktion som returnerar True
om parametern är en del av uppsättningen. För mappningar tillhandahåller den mappningsfunktionen: givet nyckeln returnerar den det associerade värdet. Nedan finns en lista över alla funktioner som är tillgängliga i modulen.
- stringprep.in_table_a1(code)¶
Bestäm om code finns i tabellA.1 (Icke tilldelade kodpunkter i Unicode 3.2).
- stringprep.in_table_b1(code)¶
Bestäm om code finns i tabellB.1 (Vanligtvis mappad till ingenting).
- stringprep.map_table_b2(code)¶
Returnera det mappade värdet för code enligt tabellB.2 (Mappning för case-folding som används med NFKC).
- stringprep.map_table_b3(code)¶
Returnera det mappade värdet för code enligt tabellB.3 (Mappning för case-folding som används utan normalisering).
- stringprep.in_table_c11(code)¶
Bestäm om code finns i tabellC.1.1 (ASCII mellanslagstecken).
- stringprep.in_table_c12(code)¶
Bestäm om code finns i tabellC.1.2 (Icke-ASCII rymdtecken).
- stringprep.in_table_c11_c12(code)¶
Bestäm om code finns i tabellC.1 (Mellanslagstecken, sammanslagning av C.1.1 och C.1.2).
- stringprep.in_table_c21(code)¶
Bestäm om code finns i tabellC.2.1 (ASCII-kontrolltecken).
- stringprep.in_table_c22(code)¶
Bestäm om code finns i tabellC.2.2 (Icke-ASCII-kontrolltecken).
- stringprep.in_table_c21_c22(code)¶
Bestäm om code finns i tabellC.2 (Kontrolltecken, sammanslagning av C.2.1 och C.2.2).
- stringprep.in_table_c3(code)¶
Bestäm om code finns i tabellC.3 (Privat bruk).
- stringprep.in_table_c4(code)¶
Bestäm om code finns i tabellC.4 (Kodpunkter som inte är tecken).
- stringprep.in_table_c5(code)¶
Bestäm om code finns i tabellC.5 (Surrogatkoder).
- stringprep.in_table_c6(code)¶
Bestäm om code finns i tabellC.6 (Olämpligt för vanlig text).
- stringprep.in_table_c7(code)¶
Bestäm om code finns i tabellC.7 (Olämplig för kanonisk representation).
- stringprep.in_table_c8(code)¶
Bestäm om code finns i tabellC.8 (Ändra visningsegenskaper eller är föråldrad).
- stringprep.in_table_c9(code)¶
Bestäm om code finns i tabellC.9 (Taggning av tecken).
- stringprep.in_table_d1(code)¶
Bestäm om code finns i tabellD.1 (Tecken med dubbelriktad egenskap ”R” eller ”AL”).
- stringprep.in_table_d2(code)¶
Bestäm om code finns i tabellD.2 (Tecken med dubbelriktad egenskap ”L”).