如何对HTTP GET请求返回数据筛选,提取所需数值?
提取values中的数字方法
这事儿很简单,咱们一步步来处理:
首先你不需要直接打印r.text,requests库已经帮我们做好了JSON解析的快捷方法——用r.json()就能直接把响应转换成Python字典,这样就能通过键值对轻松定位到你需要的数据。
核心代码实现
import requests # 替换成你的实际参数 URL = "你的目标请求地址" PARAMS = {"参数名": "参数值"} AUTH = ("用户名", "密码") # 对应你的认证方式 # 发起请求 r = requests.get(url=URL, params=PARAMS, auth=AUTH) # 将JSON响应转为Python字典 response_data = r.json() # 逐层定位到values数组 values_list = response_data["data"]["result"][0]["values"] # 提取每个子数组的第二个元素(即目标数字),转成整数类型 target_numbers = [int(item[1]) for item in values_list] # 输出结果 print(target_numbers)
代码细节解释
r.json():自动解析JSON格式的响应文本为Python字典,比手动调用json.loads(r.text)更简洁。response_data["data"]["result"][0]["values"]:因为返回的result是一个数组,且当前只有一个元素,所以用[0]取第一个元素,再获取它的values属性。- 列表推导式
[int(item[1]) for item in values_list]:遍历values里的每一组数据,取第二个元素(下标为1)并转为整数;如果你的数字是小数,把int换成float即可。
扩展:处理多个result元素的情况
如果后续返回的result数组里可能有多个对象,可以用循环批量提取所有目标数字:
all_target_numbers = [] for result_item in response_data["data"]["result"]: values = result_item["values"] numbers = [int(item[1]) for item in values] all_target_numbers.extend(numbers) print(all_target_numbers)
内容的提问来源于stack exchange,提问作者user10036786
相关产品推荐
相关产品推荐

