如何使用Python解析API响应数据并提取打印指定字段
Python解析API响应提取指定字段实现方案
实现逻辑
- 目标响应为字典结构,核心数据存储在顶层键
d对应的列表中 - 列表内每个元素的
n键对应需要输出的Name字段,v子字典中存储了需要提取的ch(涨跌额)、chp(涨跌幅)、volume(成交量)字段 - 遍历列表逐元素提取字段,按指定格式拼接文本,条目之间用空行分隔后统一输出
完整可运行代码
import json import requests # 两种数据源适配方式二选一即可: # 1. 若为接口直接请求:替换为实际接口地址即可 # api_resp = requests.get("你的接口请求地址").json() # 2. 若为已拿到的字典/JSON字符串数据,直接传入即可 api_resp = { 's': 'ok', 'd': [ {'n': 'NSE:SBIN22JUL485CE', 's': 'ok', 'v': {'ch': -2.25, 'chp': -17.05, 'lp': 10.95, 'spread': 0.25, 'ask': 10.95, 'bid': 10.7, 'open_price': 11.5, 'high_price': 15.05, 'low_price': 10.45, 'prev_close_price': 13.2, 'volume': 1161000, 'short_name': 'SBIN22JUL485CE', 'exchange': 'NSE', 'description': 'NSE:SBIN22JUL485CE', 'original_name': 'NSE:SBIN22JUL485CE', 'symbol': 'NSE:SBIN22JUL485CE', 'fyToken': '1011220728149794', 'tt': 1657584000, 'cmd': {'t': 1657620000, 'o': 10.95, 'h': 10.95, 'l': 10.95, 'c': 10.95, 'v': 1500, 'tf': '15:30'}}, {'n': 'NSE:SBIN22JUL480CE', 's': 'ok', 'v': {'ch': -2.65, 'chp': -16.46, 'lp': 13.45, 'spread': 0.1, 'ask':13.45, 'bid': 13.35, 'open_price': 15.3, 'high_price': 18.45, 'low_price': 12.9, 'prev_close_price': 16.1, 'volume': 4270500, 'short_name': 'SBIN22JUL480CE', 'exchange': 'NSE', 'description': 'NSE:SBIN22JUL480CE', 'original_name': 'NSE:SBIN22JUL480CE', 'symbol': 'NSE:SBIN22JUL480CE', 'fyToken': '1011220728128799', 'tt': 1657584000, 'cmd': {'t': 1657619940, 'o': 13.45, 'h': 13.45, 'l': 13.45, 'c': 13.45, 'v': 28500, 'tf': '15:29'}} ] } # 如果数据源是JSON字符串,先取消下行注释转为字典 # api_resp = json.loads(api_resp) result_blocks = [] for item in api_resp.get('d', []): name = item.get('n', '') v_content = item.get('v', {}) block = ( f"Name= {name}\n" f"ch = {v_content.get('ch')}\n" f"chp = {v_content.get('chp')}\n" f"volume = {v_content.get('volume')}" ) result_blocks.append(block) print('\n\n'.join(result_blocks))
运行输出结果
代码运行后将完全匹配要求的输出格式:
Name= NSE:SBIN22JUL485CE ch = -2.25 chp = -17.05 volume = 1161000 Name= NSE:SBIN22JUL480CE ch = -2.65 chp = -16.46 volume = 4270500
优化说明
- 代码使用
dict.get()方法取值,接口偶发返回字段缺失时不会抛出KeyError中断程序 - 适配了HTTP请求返回、本地字典、JSON字符串三种常见数据源场景,可直接复用
内容的提问来源于stack exchange,提问作者Welldata Solutions
相关产品推荐
相关产品推荐

