印刷後に次のような文字列があります。\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71
しかし、この文字列を印刷できないものに変更したい"\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71"
(シリアルポートに書き込む必要がある)。「 」に問題があることはわかってい\
ます。この印刷可能なバックスラッシュを印刷不可に置き換えるにはどうすればよいですか?
文字列をデコードする場合は、decode()
with'string_escape'
パラメータを使用して、変数内のリテラルをpythonリテラル文字列として解釈します(コードで定数文字列として入力されたかのように)。
mystr.decode('string_escape')
使用decode()
:
>>> st = r'\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71'
>>> print st
\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71
>>> print st.decode('string-escape')
MÿýfHq
その最後のゴミは、私のPythonが印刷できない文字列を印刷しようとしたときに印刷するものです。
your_string.decode('string_escape')
文字列リテラルの印刷可能な表現を文字列自体と混同しています。
>>> c = '\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71'
>>> c
'M\xff\xfd\x00\x02\x8f\x0e\x80fHq'
>>> len(c)
11
>>> len('\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71')
11
>>> len(r'\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71')
44