Ist es möglich, nicht druckbare Zeichen in einer Python-Zeichenkette mit ihren Hex-Werten zu visualisieren?
z.B. Wenn ich eine Zeichenfolge mit einer neuen Zeile habe, möchte ich sie durch \x0a
ersetzen.
Ich weiß, dass es repr()
gibt, was mir ... \n
gibt, aber ich suche nach der Hex-Version.
Sie müssen die Übersetzung manuell vornehmen. Gehe zum Beispiel mit einem regulären Ausdruck durch die Zeichenfolge und ersetze jedes Vorkommen durch das Hexadezimaläquivalent.
%Vor% Das obige Beispiel vergleicht nur Zeilenumbrüche und Zeilenumbrüche, aber Sie können erweitern, welche Zeichen übereinstimmen, einschließlich der Verwendung von \x
Escape-Codes und Bereichen.
Ich bin irgendwie zu spät zur Party, aber wenn Sie es für das einfache Debuggen brauchen, fand ich, dass das funktioniert:
%Vor%Hässlich, aber es hat mir geholfen, nicht druckbare Zeichen in einer Zeichenfolge zu finden.
Die Änderung der ecatmur-Lösung für nicht druckbare Nicht-ASCII-Zeichen macht es weniger trivial und anstößiger:
%Vor% Natürlich, wenn str.isprintable
nicht genau die gewünschte Definition ist, können Sie eine andere Funktion schreiben. (Beachten Sie, dass es sich um ein ganz anderes Set als in string.printable
handelt, das nicht mit ASCII druckbare und nicht druckbare Zeichen behandelt. Es berücksichtigt auch \n
, \r
, \t
, \x0b
und \x0c
. als nicht druckbar.
Sie können das kompakter machen; Dies ist explizit nur um alle Schritte im Umgang mit Unicode-Strings zu zeigen. Zum Beispiel:
%Vor% Wirklich, egal was du tust, du wirst \r
, \n
und \t
explizit behandeln müssen, weil alle eingebauten und stdlib-Funktionen, von denen ich weiß, über sie entkommen werden diese speziellen Sequenzen anstelle ihrer Hex-Versionen.
Tags und Links python escaping python-3.x