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

Python3中requests.content调用translate报错TypeError,如何修复?

Python3中修复requests内容处理的TypeError问题

嘿,这个问题我太熟悉了——Python2和Python3在字符串/字节流的处理上差异很大,这就是你报错的根源!

问题原因

在Python3里,requests.get()返回的r.content是bytes类型(字节流),而你写的"\n \t/\"'"是str类型(字符串)。Python3严格区分这两种类型,不像Python2那样混为一谈,所以直接用str去操作bytes就会抛出TypeError: a bytes-like object is required, not 'str'。

两种修复方案

你可以根据自己的需求选下面任意一种:

方案1:先把字节流转成字符串处理

先将r.content解码为字符串,再使用字符串的translate方法(注意Python3的str.translate需要配合str.maketrans创建转换表):

# 先用合适的编码解码bytes为字符串,通常用utf-8,根据实际返回内容调整
content_str = r.content.decode('utf-8')
# str.maketrans('', '', 要删除的字符) 表示创建一个删除指定字符的转换表
name = content_str.translate(str.maketrans('', '', "\n \t/\"'"))

如果不确定编码,也可以直接用r.text(requests会自动尝试识别响应编码),代码更简洁:

name = r.text.translate(str.maketrans('', '', "\n \t/\"'"))

方案2:直接处理字节流

如果你不需要转成字符串,想直接操作bytes,那把要删除的字符也转成bytes(加b前缀即可):

# 把要删除的字符串改成bytes类型(b前缀)
name = r.content.translate(None, b"\n \t/\"'")

小提示

如果用方案1解码时出现乱码,记得检查响应的实际编码(可以看响应头里的Content-Type字段),把decode的参数改成对应的编码,比如decode('gbk')或者decode('utf-16')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:02:11