我使用requests
库使用python3查询Github的Jobs API,但遇到了解析响应的错误。
图书馆:http://docs.python-requests.org/en/latest/
代码:
import requests
import json
url = 'https://jobs.github.com/positions.json?'
response = requests.get(url)
print(response.json())
错误:
UnicodeEncodeError:' ascii'编解码器不能编码字符' \ u2019'在 位置321:序数不在范围内(128)
过去在Ruby中使用此API,我从未遇到过这个问题。
我也尝试将其转换为字典,但却导致了相同的错误。
还有其他关于UnicodeEncodeError
的问题(主要是re:打开文件),但我不熟悉Python并且没有发现它们有用。
答案 0 :(得分:1)
首先,检查响应是否真的是JSON。尝试打印response.text
并查看它是否看起来像是有效的JSON对象。
假设它是JSON:它非常“hack”-ey,但你可以用它们的转义Unicode表示替换非ASCII字符:
def escape_unicode(c):
return c.encode('ascii', 'backslashreplace').decode('ascii')
response = ...
text = response.text
escaped = re.sub(r'[^\x00-\x7F]', lambda m: escape_unicode(m.group(0)), text)
json_response = json.loads(escaped)