Python实现JSON转CSV问题:无法将数值写入CSV第二列
问题:JSON数据无法写入CSV第二列
当前Python代码仅能将JSON中quotes的键输出到CSV第一列,无法将对应数值写入第二列,期望实现键值对分别对应COL1和COL2。
期望输出CSV
COL1,COL2 VAL1,123.777 VAL2,456.888 VAL3,789.999
原始JSON文件(file.json)
{ "success": true, "timestamp": 1663273564, "source": "ABC", "quotes": { "VAL1": 123.777, "VAL2": 456.888, "VAL3": 789.999 } }
原始Python代码
import json import csv with open("C:file.json") as file: data = json.load(file) fname = "c:/output.csv" with open(fname, "w") as file: csv_file = csv.writer(file) csv_file.writerow(["COL1","COL2"]) for item in data["quotes"]: csv_file.writerow([item[0:4]])
当前错误输出CSV
COL1,COL2 VAL1 VAL2 VAL3
修正方案
问题根源
- 遍历字典
data["quotes"]时,默认仅获取键,未提取对应数值 writerow([item[0:4]])仅写入单个元素,无法填充第二列
修正后的代码
import json import csv # 修正路径格式(添加斜杠避免解析错误) with open("C:/file.json") as file: data = json.load(file) fname = "c:/output.csv" with open(fname, "w", newline='') as file: csv_file = csv.writer(file) csv_file.writerow(["COL1","COL2"]) # 使用items()同时获取键和值 for key, value in data["quotes"].items(): csv_file.writerow([key, value])
关键修改点
- 遍历方式调整:用
data["quotes"].items()替代直接遍历字典,同时获取键(key)和对应数值(value) - 路径修正:将
"C:file.json"改为"C:/file.json",避免Windows路径解析错误 - 添加
newline='':防止CSV文件中出现多余空行(Windows环境下推荐)
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

