首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python字符串中解码特定转义字符

在Python字符串中解码特定转义字符
EN

Stack Overflow用户
提问于 2022-03-27 11:26:19
回答 3查看 154关注 0票数 0

我有一个Python变量(名为var),它包含具有以下文字数据的字符串:

代码语言:javascript
运行
复制
day\r\n\\night

在妖术中,它是:

代码语言:javascript
运行
复制
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

期望的输出(十六进制):

代码语言:javascript
运行
复制
64  61  79  0D  0A  5C  6E  69  67  68  74  07
d   a   y   CR  LF  \   n   i   g   h   t   BEL

使用decode不起作用:

代码语言:javascript
运行
复制
>>> 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。

EN

Stack Overflow用户

回答已采纳

发布于 2022-03-28 07:10:09

感谢每一个给出答案的人,但他们似乎没有一个能完全解决我的问题。经过长时间的研究,我发现了这是sahil Kothiya的解决方案 (镜像) --我修改了它以解决我的具体问题:

代码语言:javascript
运行
复制
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++中显示的特殊字符:

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

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71635896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档