这个问题与我报告的 Stack Overflow API 最近的变化有关 here .在那个问题中,我收到了 response这似乎行得通,但实际上我无法让它工作。
这是我的代码
import requests
import json
url="https://api.stackexchange.com/2.2/sites/?filter=%21%2AL1%2AAY-85YllAr2%29&pagesize=1&page=1"
response = requests.get(url)
response.text
这输出
u'\ufeff{"items":[{"site_state":"normal","api_site_parameter":"stackoverflow","name":"Stack Overflow"}],"has_more":true,"quota_max":300,"quota_remaining":294}'
领先的 u'\ufeff
意味着如果我执行 response.json()
我会得到一个 ValueError: No JSON object could be decoded
我得到的建议是使用decode('utf-8-sig')
。但是,我似乎也无法完成这项工作:
尝试 1:
response.text.decode('utf-8-sig')
UnicodeEncodeError: 'ascii' codec can't encode character u'\ufeff' in position 0: ordinal not in range(128)
尝试 2:
json.loads(response.text).decode('utf-8-sig')
ValueError: No JSON object could be decoded
删除前导 u'\ufeff
的合适方法是什么?
最佳答案
response.text
是一个 Unicode 对象,即。 e.它已经被解码,所以你不能再解码它。
您需要做的是告诉response
对象它应该使用哪种编码:
response = requests.get(url)
response.encoding = "utf-8-sig"
respose.text
关于python - 如何在 python 中删除字节顺序标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554458/