【问题标题】:How can I sort my HTTP GET to return what I need?如何对我的 HTTP GET 进行排序以返回我需要的内容?
【发布时间】:2020-01-03 17:44:45
【问题描述】:

所以我正在为一个返回我一些数据的查询发出 HTTP GET 请求。

我得到的答案正是我想要的/我期望的。现在我想知道如何才能从返回的数据中只获取我想要的内容。

这是我正在运行的代码:

r = requests.get(url = URL, params = PARAMS, auth = AUTH)
print (r.text)

这就是我从中得到的:

{"status":"success","data":{"resultType":"matrix","result":[{"metric":{},"values":[[1567169541,"1"],[1567169556,"1"],[1567169571,"1"],[1567169586,"1"],[1567169601,"1"]]}]}}

我需要的只是“值”中的数字。所以有很多我不需要的数据。在括号内还有一个我不需要的时间戳。

我真的只需要这个号码。

那么我该怎么做呢?

【问题讨论】:

  • 你是怎么知道的? r 本身 包含 响应,但取决于您使用的 r 的哪个属性或方法,您有一个 dict 或需要解码为 @987654326 的 JSON 值@.
  • 我现在正在添加该代码。它只是与文本打印一起显示,所以我猜是字典?

标签: python http get request


【解决方案1】:

r.text 是响应的正文;在这种情况下,它包含一个 JSON 值,需要对其进行解码以获得dict

d = json.decodes(r.text)

但是,Response 对象有一种方法可以为您完成此操作。

d = r.json()

现在只需适当地索引 Python 数据结构即可。

# d['data']['result'] == [{"metric":{},"values":[[1567169541,"1"],[1567169556,"1"],[1567169571,"1"],[1567169586,"1"],[1567169601,"1"]]}]
# x only takes a single value in this case, as the above is a singleton list
# y == [1567169541,"1"]
#      [1567169556,"1"]
#      etc
values = [y[0] for x in d['data']['result'] for y in x['values']]

【讨论】:

    猜你喜欢
    • 2011-02-20
    • 2011-08-05
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多