我想要一个反斜杠 - 而不是两个

时间:2010-07-27 10:33:08

标签: python string backslash

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

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

4 个答案:

答案 0 :(得分:5)

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

mystr.decode('string_escape')

答案 1 :(得分: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打印的内容。

答案 2 :(得分: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

答案 3 :(得分:1)

your_string.decode('string_escape')