Python解析复杂字典数据:API返回结果格式化问题求助
问题详情
我是编程新手,已经花了好几天处理这个问题。我从API拿到响应数据,想重新格式化让它更易读,也方便后续代码调用。
当前代码
import requests import pandas for item in items: #item is defined previously in the code response = request.get(url, parameters={put stuff here}, headers={more stuff here}) json_response = response.json() print(item) print(json_response)
当前输出
item1 {'series':{'data':[{'keyA':'value1', 'keyB':'value2', 'keyC':'value3'}, {'keyA':'value4', 'keyB':'value5', 'keyC':'value6'}, {'keyA':'value7', 'keyB':'value8', 'keyC':'value9'}]}} item2 {'series':{'data':[{'keyA':'value10', 'keyB':'value11', 'keyC':'value12'}, {'keyA':'value13', 'keyB':'value14', 'keyC':'value15'}, {'keyA':'value16', 'keyB':'value17', 'keyC':'value18'}]}}
(注:修正了原输出中的语法错误,比如'keyB:value2缺少闭合引号)
期望输出
item1 keyA keyB keyC value1 value2 value3 value4 value5 value6 value7 value8 value9 item2 keyA keyB keyC value10 value11 value12 value13 value14 value15 value16 value17 value18
我试过不少pandas和numpy的代码,但都报一堆错,求帮忙解决。
解决方案
用pandas把JSON数据转成DataFrame就能轻松实现你要的格式,而且DataFrame本身也方便后续代码处理。修改后的代码如下:
import requests import pandas as pd for item in items: # item is defined previously in the code # 修正拼写错误:request → requests response = requests.get(url, parameters={put stuff here}, headers={more stuff here}) json_response = response.json() # 提取data列表 data = json_response['series']['data'] # 转成DataFrame df = pd.DataFrame(data) # 打印item名称 print(item) # 格式化输出:去掉索引,设置列宽保证对齐 print(df.to_string(index=False, col_space=12)) # 空行分隔不同item的结果 print()
关键说明
- 原代码有两个低级错误:
request.get应该是requests.get,还有缩进不规范,已经修正。 pd.DataFrame(data)会自动把字典列表转换成带列名的表格,列名就是你要的keyA、keyB、keyC。to_string(index=False, col_space=12)用来隐藏行索引,同时给每列分配足够宽度,确保输出对齐整齐,完全匹配你的期望格式。- 最后的
print()用来分隔不同item的输出,避免内容挤在一起。
如果还是报错,先检查API返回的json_response结构是否和你提供的示例一致,或者确认items、url等变量是否正确定义。
内容的提问来源于stack exchange,提问作者cptjack345
相关产品推荐
相关产品推荐

