我有一个字符串,打印后是这样的:\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 在尝试打印不可打印的字符串时打印的内容。
您将字符串文字的可打印表示与字符串本身混淆:
>>> 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
your_string.decode('string_escape')