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

正しい形式のinvert_reprは何ですか? string_escape & unicode_escape?python3のバイトrepr()の反転演算とは何ですか?

+1

あなたは 'のrepr()'シリアライズするとunserialiseデータを使用していますか?そうではありませんが、Python構文はシリアル化形式ではありません。代わりにpickle、marshallまたはjsonを使用してください。 –

答えて

3

使用evalまたは同等:

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

はい、それは本当に遅いです。文字列ベースの操作を教えてください。 – ShenLei

+2

@ShenLei:いいえ、他のオプションはありません。あなたはPythonバイト文字列リテラルを持っています。これは、これをもう一度解釈するオプションです。なぜこれが必要ですか? –

+0

テキストファイルからデータを読み込み、repr()を使ってデコードできなかった内容を別のファイルに出力したためです。今私は後者を処理したい。 – ShenLei

関連する問題