2016-07-04 18 views
0
a = b'\x00\x01' 
ra = repr(a) # ra == "b'\\x00\\x01'" 
assert invert_repr(ra) == a 

Was ist die korrekte Form von invert_repr? string_escape & unicode_escape?Was ist die Invertierung von Bytes repr() in Python3?

+1

Sind Sie 'repr()' mit serialise und unserialise Daten? Nicht, Python-Syntax ist nicht als Serialisierungsformat gedacht. Verwenden Sie stattdessen Essiggurke, Marshall oder Json. –

Antwort

3

Verwendung eval oder gleichwertig:

from ast import literal_eval 
a = b'\x00\x01' 
ra = repr(a) 
assert literal_eval(ra) == eval(ra) == a # no error 

ast.literal_eval is safer than eval.

+0

Ja, aber es ist wirklich langsam. Können Sie mir eine stringbasierte Operation geben? – ShenLei

+2

@ShenLei: Nein, es gibt keine anderen Optionen. Sie haben ein Python-Byte-String-Literal, dies sind Ihre Optionen, um es erneut zu interpretieren. Warum brauchst du das? –

+0

Weil ich Daten aus einer Textdatei gelesen habe und Inhalte mit fehlgeschlagener Dekodierung mit repr() in eine andere Datei geschrieben habe. Jetzt möchte ich letzteres verarbeiten. – ShenLei

Verwandte Themen