1

我有一个字符串,打印后是这样的:\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71

但我想将此字符串更改"\x4d\xff\xfd\x00\x02\x8f\x0e\x80\x66\x48\x71"为不可打印的(必须写入串行端口)。我知道这是' \'的问题。如何将此可打印的反斜杠替换为不可打印的?

4

4 回答 4

5

如果要解码字符串,请使用decode()with'string_escape'作为参数,它将变量中的文字解释为 python 文字字符串(就好像它在代码中输入为常量字符串一样)。

mystr.decode('string_escape')
于 2010-07-27T10:42:12.377 回答
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 在尝试打印不可打印的字符串时打印的内容。

于 2010-07-27T10:41:39.757 回答
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
于 2010-07-27T10:40:12.910 回答
1
your_string.decode('string_escape')
于 2010-07-27T10:41:24.400 回答