我想在 Python 中将字节字符串的双反斜杠替换为单反斜杠。
例如,有一个字节串。
word = b'Z\xa6\x97\x86j2\x08q\\r\xca\xe6m'
我需要这个字节串。
word = b'Z\xa6\x97\x86j2\x08q\r\xca\xe6m'
如果我像这样使用替换:
word = word.replace(b"\\",b"\")
我遇到了这个错误。
File "test.py", line 79
word = word.replace(b"\\", b"\")
^
SyntaxError: EOL while scanning string literal
有人知道怎么做吗?
\\
不是双反斜杠,而是一个转义。看:
print b'Z\xa6\x97\x86j2\x08q\\r\xca\xe6m'
# Z���jq\r��m
\r
(来自您想要的输出)不是 2 个字符而是一个:
print b'Z\xa6\x97\x86j2\x08q\r\xca\xe6m'
# ��m�jq
(打印到终端时,carriage return \r
阻止我们看到第一个字母 Z
)
如果您真的想用'\r'
替换'\\r'
,您可以这样做:
print repr(word.replace('\\r', '\r'))
# 'Z\xa6\x97\x86j2\x08q\r\xca\xe6m'
print word.replace('\\r', '\r')
# ��m�jq
或者,如果你想替换所有的 escape sequences . Python2版本:
print repr(b'1\\t2\\n3'.decode('string_escape'))
# '1\t2\n3'
print b'1\\t2\\n3'.decode('string_escape')
# 1 2
# 3
Python3版本:
print(repr(b'1\\t2\\n3'.decode('unicode_escape')))
# '1\t2\n3'
print(b'1\\t2\\n3'.decode('unicode_escape'))
# 1 2
# 3
我是一名优秀的程序员,十分优秀!