我正在编写一个Python脚本,该脚本从返回JSON的API中提取数据。当我在浏览器中访问API端点时,会得到正确引用的结果;例如
{ "architecture_name":"x86_64","operatingsystem_id":22,"operatingsystem_name":"RedHat 7.6" }
但是,当我通过Python脚本连接到API时,会得到不正确的引用结果:
{ u'architecture_name':u'x86_64',u'operatingsystem_id':u'22',u'operatingsystem_name':u'RedHat 7.6' }
我使用的函数只是通过URL调用API:
def get_json(location, username, password):
# Performs a GET using the passed URL location
r = requests.get(location, auth=(username, password), verify=False)
return r.json()
我无法识别u'...'
格式,也无法通过Google找到任何内容。我应该设置编码吗?
答案 0 :(得分:1)
在此处进行r.json()
时,它不会返回实际的JSON-而是返回一个python dict。您看到的u'
字符串是 unicode字符串-只是碰巧具有与原始字符串不同的某种编码类型的字符串(顺便说一下,这在python3中不再是问题-所有字符串是unicode字符串)。
出于所有意图和目的,您可以将r
视为dict
,因为这就是事实。如果您想再次将其正式正式输出为有效的JSON(带有有效的引号字符和所有字符),则可以使用json
模块将该字典转换为包含有效JSON格式的字符串:
import json
...
print(json.dumps(r))