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

Python如何将内容为bytes字面量的网站返回字符串转为bytes类型

你拿到的是bytes类型的Python字面量格式的字符串,需要将其转换为实际的bytes类型,可通过以下两种常用方案实现:

方案1:使用ast.literal_eval(推荐,安全)

ast.literal_eval只会解析Python基础字面量(字符串、数字、bytes、列表、元组等),不会执行任意代码,安全性远高于eval,是这类场景的首选方案。

import ast

# 你从网站拿到的字符串
encrypted_text_str = "b'gAAAAABhdoRSo3k8NAXitaA=='"
# 转换为bytes类型
encrypted_bytes = ast.literal_eval(encrypted_text_str)

print(type(encrypted_bytes))  # 输出: <class 'bytes'>
print(encrypted_bytes)  # 输出: b'gAAAAABhdoRSo3k8NAXitaA=='

方案2:手动切片处理(仅适用于无转义的简单场景)

如果你的字符串格式固定,都是b'xxx'的结构,且内部没有转义的单引号,可以手动去掉前后的标识字符后编码为bytes,优点是无需导入模块,缺点是兼容性差,遇到特殊字符会出错。

encrypted_text_str = "b'gAAAAABhdoRSo3k8NAXitaA=='"
# 去掉前缀的`b'`和后缀的`'`,再编码为bytes
encrypted_bytes = encrypted_text_str[2:-1].encode('utf-8')

print(type(encrypted_bytes))  # 输出: <class 'bytes'>

注意事项

  • 不要直接使用eval处理外部输入的字符串:外部不可信的输入可能包含恶意代码,eval会直接执行,存在严重安全风险。
  • 如果拿到的字面量是用双引号包裹的(比如b"xxx"),手动切片时要对应调整截取的范围,或者直接用ast.literal_eval自动兼容两种引号格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:06:03