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

如何将Python中格式为字节字面量的字符串转换为bytes类型?

Python 字节字面量格式字符串转原生bytes的解决方案

你当前拿到的字符串是Python bytes 对象的字面量表示(即对bytes对象执行repr()后得到的字符串结果),直接调用encode()方法会对字符串的所有字符逐字编码,因此会额外生成外层b'、'对应的字节,以及把原转义符\做二次转义,和预期结果不符。

推荐解决方案:使用ast.literal_eval(安全)

该方法会直接解析Python字面量语法,不需要手动处理字符串格式,也不会像eval()一样存在任意代码执行风险,是最稳妥的方案。

import ast

# 你的原始字符串,类型为str
str_data = "b'\\xa1\\xc9\\x1c\\xe29\\xc5]\\x02\\xaerZ\\xfaC'"
# 解析为bytes类型
bytes_data = ast.literal_eval(str_data)

print(type(bytes_data))  # 输出: <class 'bytes'>
print(bytes_data)  # 输出: b'\xa1\xc9\x1c\xe29\xc5]\x02\xaerZ\xfaC'

备选方案:手动裁剪前后缀+转义编码

如果你能100%确定输入字符串的格式固定为b'xxx'或者b"xxx"的格式,也可以手动裁剪掉外层的标识字符后用raw_unicode_escape编码得到结果:

str_data = "b'\\xa1\\xc9\\x1c\\xe29\\xc5]\\x02\\xaerZ\\xfaC'"
# 裁剪掉开头的b'和结尾的',如果是双引号包裹保持s[2:-1]即可
inner_str = str_data[2:-1]
bytes_data = inner_str.encode('raw_unicode_escape')

print(bytes_data)  # 输出: b'\xa1\xc9\x1c\xe29\xc5]\x02\xaerZ\xfaC'

该方案需要严格匹配输入字符串的前后缀格式,如果输入存在引号嵌套、前后缀不统一的情况会解析失败,仅在你能完全控制输入格式的场景下使用。

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:36:03