如何用Python将Requests获取的JSON数据转换为CSV?
解决JSON转CSV的两种实用方法
嘿,你已经成功用requests从API拿到JSON数据了,接下来转CSV其实超简单!我给你两种实用方法,按需选就行:
方法一:用Python内置csv模块(无需额外安装)
如果你不想装第三方库,用Python自带的csv模块就搞定了,刚好适配你用的Python2环境。直接在现有代码后面加这段:
import csv # 先判断有没有拿到有效数据 if data: # 从第一个数据字典里提取CSV的表头(就是那些键名,比如date、totalImpression) fieldnames = data[0].keys() # 打开一个CSV文件准备写入,文件名可以自己改 with open('stats_data.csv', 'wb') as csvfile: # 创建DictWriter对象,用来把字典转成CSV行 writer = csv.DictWriter(csvfile, fieldnames=fieldnames) # 先写入表头 writer.writeheader() # 把每一条JSON数据逐行写入CSV for row in data: writer.writerow(row) print "CSV文件已成功生成!" else: print "没获取到有效数据,没法生成CSV哦"
关键点说明:
'wb'模式是Python2里写入CSV的正确打开方式,能避免换行符乱掉的问题DictWriter会自动把字典的键对应到表头,值对应到列,不用手动对齐位置
方法二:用pandas模块(代码更简洁)
如果能装第三方库,pandas的写法会更省心,一行核心代码就搞定。
首先先安装pandas:
pip install pandas
然后在你的代码里添加:
import pandas as pd # 把JSON的字典列表直接转成DataFrame表格 df = pd.DataFrame(data) # 保存成CSV,index=False是去掉自动生成的行号,encoding避免乱码 df.to_csv('stats_data_pandas.csv', index=False, encoding='utf-8') print "CSV文件已成功生成!"
关键点说明:
- pandas会自动处理表头和行数据的对应,不用手动提取键名
index=False一定要加,不然CSV里会多一列没用的行索引
内容的提问来源于stack exchange,提问作者user9371527
相关产品推荐
相关产品推荐

