我只要一个反斜杠 - 不是两个
我有一个字符串,打印出来是这样的:\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71
但是我想把这个字符串改成"\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71"
,这个字符串是不可打印的(因为我需要把它写入串口)。我知道问题出在'\
'这个符号上。我该怎么把这个可打印的反斜杠替换成不可打印的呢?
4 个回答
1
你把字符串字面量的可打印表示和字符串本身搞混了:
>>> 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
2
使用 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 输出的内容。
5
如果你想解码你的字符串,可以使用 decode()
方法,并把 'string_escape'
作为参数传进去。这样做会把你变量里的内容当作 Python 字符串来理解,就像你在代码里直接写的常量字符串一样。
mystr.decode('string_escape')