我有一个Python变量(名为var),它包含具有以下文字数据的字符串:
day\r\n\\night在妖术中,它是:
64 61 79 5C 72 5C 6E 5C 5C 6E 69 67 68 74 07
d a y \ r \ n \ \ n i g h t BEL我只需要解码\\,\r和\n。
期望的输出(十六进制):
64 61 79 0D 0A 5C 6E 69 67 68 74 07
d a y CR LF \ n i g h t BEL使用decode不起作用:
>>> print(var.decode('ascii'))
AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'?使用regex查找和替换\\、\r和\n的转义值是不成功的,因为\night中的\n被视为0x0A。
是否可以指定我想要decode的字符,或者是否有更合适的模块?我正在使用Python3.10.2。
发布于 2022-03-28 07:10:09
感谢每一个给出答案的人,但他们似乎没有一个能完全解决我的问题。经过长时间的研究,我发现了这是sahil Kothiya的解决方案 (镜像) --我修改了它以解决我的具体问题:
import re, codecs
ESCAPE_SEQUENCE_RE = re.compile(r'''
( \\[\\nr] # Single-character escapes
)''', re.UNICODE | re.VERBOSE)
def decode_escapes(s):
def decode_match(match):
return codecs.decode(match.group(0), 'unicode-escape')
return ESCAPE_SEQUENCE_RE.sub(decode_match, s)无所事事的示威:

Notepad++中显示的特殊字符:

输出字符串的十六进制转储:

它甚至可以使用Unicode字符(我的脚本中的一个重要组件)。
无所事事的示威:

Notepad++中显示的特殊字符:

输出字符串的十六进制转储:

https://stackoverflow.com/questions/71635896
复制相似问题