Was bedeutet ein führendes "\ x" in einem Python-String "\ xaa"?

73

Was ist der Unterschied zwischen 'aa'und '\xaa'? Was bedeutet der \xTeil? Und welches Kapitel der Python-Dokumentation behandelt dieses Thema?

Haiyuan Zhang
quelle

Antworten:

112

Die führende \xEscape-Sequenz bedeutet, dass die nächsten beiden Zeichen als hexadezimale Ziffern für den Zeichencode interpretiert werden. Dies \xaaentspricht chr(0xaa)also chr(16 * 10 + 10)- dh einem kleinen erhabenen Kleinbuchstaben 'a'.

Escape-Sequenzen werden hier in den Python- Dokumenten in einer kurzen Tabelle dokumentiert .

Alex Martelli
quelle
chr (170) kann nur im Kontext von Python 3.X ohne Bezugnahme auf eine bestimmte Codierung interpretiert werden, und es ist tatsächlich ein "weiblicher Ordnungsindikator" ... eine Besonderheit der spanischen Rechtschreibung, zusammen mit seinem Geschwister U + 00BA "männlich Ordnungszahl ".
John Machin
Was machst du, wenn du mehr als 2 Hex-Ziffern haben
willst
-7

Das ist ein Unicode-Zeichen, das entkommt. Siehe "Unicode-Konstruktoren" auf PEP 100

Jake Wharton
quelle
2
Nein, ist es nicht. Es dient zum Definieren eines bestimmten Bytes in a strund nicht zum Erstellen eines Unicode-Codepunkts, was mit der u'\u...Notation erfolgt.
Mike Graham
@ Mike, @ Jake: Es ist für beide. '\ xaa' ist ein str-Objekt. u '\ xaa' ist ein Unicode-Objekt. print repr(unichr(170))produziertu'\xaa'
John Machin
Hoppla. Ich habe das IronPython-Tag anscheinend nicht bemerkt. erröten . Die Konzepte in meinem Kommentar sind immer noch ziemlich relevant - \xund \ubleiben etwas andere Dinge.
Mike Graham