You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含转义序列的UTF-8字符串按字节字面量方式解析

如何将含转义序列的UTF-8字符串按字节字面量方式解析

我太懂你这个需求了!你想要的是把字符串里的转义序列(比如\x00、\xff)当成原始二进制字节来解析,而不是转换成Unicode字符——就像直接写Python的bytes字面量那样。之前用unicode-escape解码之所以不对,是因为它本来就是用来处理Unicode转义的,会把\xff映射成Unicode码点U+00FF(也就是字符ÿ),完全不是你要的二进制字节效果。

这里有个精准的解决方案,用Python标准库的codecs模块里的escape_decode()函数,它专门负责把带二进制转义的字符串转换成字节,和解析bytes字面量的逻辑一模一样:

import codecs

# 假设这是你从文件里读出来的字符串
s = r'abc \x00\x01\xff'

# 先把字符串转成UTF-8字节,再用escape_decode解析转义序列
result_bytes, _ = codecs.escape_decode(s.encode('utf-8'))

# 验证结果,和bytes字面量完全一致
print(list(result_bytes))  # 输出: [97, 98, 99, 32, 0, 1, 255]

如果是直接从UTF-8编码的文件里读取内容,步骤也很简单:

import codecs

with open('your_file.txt', 'r', encoding='utf-8') as f:
    file_content = f.read()

# 解析转义序列得到目标字节
target_bytes, _ = codecs.escape_decode(file_content.encode('utf-8'))
print(list(target_bytes))

简单解释下这个函数:escape_decode()会自动识别字符串里的\xXX十六进制转义、\ooo八进制转义,把它们转换成对应的二进制字节值,完全复刻了Python解析b'...'字面量的行为,刚好解决你的问题。

备注:内容来源于stack exchange,提问作者August West

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 17:53:11