\\
- это не двойной обратный слеш, а один экранированный. Посмотрите:
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
(при печати на терминал возврат каретки \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-последовательности . Версия 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