设置API请求的输出数据子集



我正在从API中获取一些数据,代码如下:

import requests
url = "http://prognos.konj.se/PxWeb/api/v1/sv/SenastePrognosen/f06_rantorochvaxelkurser/F0604.px"
querystring = {
"query": [
{
"code": "variabel",
"selection": {
"filter": "item",
"values": [
"F0604Repo_u"
]
}
},
{
"code": "period",
"selection": {
"filter": "item",
"values": [
"321",
"322",
"323",
"324"
]
}
}
],
"response": {
"format": "px"
}
}
response = requests.post(url, json=querystring)
print(response.text)

print语句产生以下答案(为简洁起见省略所有输出):

LINK[en]="http://www.konj.se/prognosdokumentationpx";
DATA=
-0.2500 -0.2500 -0.2500 0.0000 
;

现在我只想获取数据部分。我的第一个想法是:打印(响应["Data")

产生错误:

TypeError: 'Response' object is not subscriptable

关于如何做到这一点,即获取输出的数据部分的任何建议?

编辑:按照@joshmerandas的答案执行会产生错误:

json = response.json()
Traceback (most recent call last):
File "<ipython-input-68-45bbb244f888>", line 1, in <module>
json = response.json()
File "C:MyUserProfileanaconda3libsite-packagesrequestsmodels.py", line 898, in json
return complexjson.loads(self.text, **kwargs)
File "C:UsersC:MyUserProfileanaconda3libjson__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:UsersC:MyUserProfileanaconda3libjsondecoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:UsersC:MyUserProfileanaconda3libjsondecoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
JSONDecodeError: Expecting value

在从返回的json中提取数据之前,需要访问response中的json数据。请参阅Response对象的文档。你会发现json(**kwargs)方法。所以你从json中访问"Data"字段,你会有这样的东西:

response = requests.post(url, json=querystring)
json = response.json()
data = json["Data"]
print(data)

最新更新