我有以下抛出的非常基本的代码:TypeError:JSON对象必须是str,而不是'bytes'
import requests
import json
url = 'my url'
user = 'my user'
pwd = 'my password'
response = requests.get(url, auth=(user, pwd))
if(myResponse.ok):
Data = json.loads(myResponse.content)
我试图将decode设置为数据变量,如下所示,但它抛出了相同的错误;jData = json.loads(myResponse.content).decode('utf-8')
有什么建议吗?
你只是把它放错了顺序,无辜的错误。
(深入回答)。正如wim礼貌地指出的,在一些罕见的情况下,他们可以选择UTF-16或UTF-32。这些情况对于开发人员来说并不常见,因为在这种情况下,他们会有意识地决定丢弃有价值的带宽。因此,如果遇到编码问题,可以将utf-8更改为16、32等
有两种解决方案。您可以使用请求的内置
.json()
函数:或者,您可以选择通过
chardet
进行字符检测。Chardet是一个基于研究开发的图书馆。库有一个函数:detect
。Detect可以检测最常见的编码,然后使用它们对字符串进行编码。让请求为您解码:
这将检查头(内容类型)和响应编码,自动检测如何正确解码内容。
python3.6+会自动执行此操作。因此代码不应在python3.6+中返回错误
what's new in python3.6
相关问题 更多 >
编程相关推荐