如何提取API返回的PX格式响应内容中的DATA字段数据
解决方法
报错原因
- 你在请求参数中指定了
"response": {"format": "px"},接口返回的是PX格式纯文本,并非JSON结构,因此调用response.json()会解析失败 - requests库返回的
response是响应对象,不是字典类型,不能直接用[]按下标取值,因此response["Data"]会抛出类型错误
提取方案
方案1:直接解析返回的PX文本(无需修改请求)
直接对response.text做字符串处理即可提取DATA部分的数值,代码示例如下:
# 方法1:字符串分割(简单快速) content = response.text # 按DATA=拆分取后半段,再按结尾的;拆分取前半段 data_part = content.split("DATA=")[1].split(";")[0] # 去除空白后按空格拆分,转为浮点型列表 data_list = [float(num) for num in data_part.strip().split()] print(data_list) # 输出结果:[-0.25, -0.25, -0.25, 0.0]
如果想要兼容性更强,避免格式波动影响提取,可以用正则匹配:
import re # 方法2:正则匹配(稳定性更高) match_result = re.search(r'DATA=\s*(.*?)\s*;', response.text, re.S) if match_result: data_part = match_result.group(1) data_list = [float(num) for num in data_part.split()] print(data_list)
方案2:修改请求参数直接返回JSON(更规范)
不需要手动解析文本,直接把请求中的返回格式改为JSON即可,修改querystring里的response配置:
querystring = { # 其余配置保持不变 "response": { "format": "json" # 把px改成json } }
修改后再发起请求,就可以直接用response.json()解析返回结果,按字典的规则提取对应字段即可。
内容的提问来源于stack exchange,提问作者MathStat2718
相关产品推荐
相关产品推荐

