You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python JSON转CSV提取指定键触发KeyError,如何自动填充缺失键

问题修复:JSON转CSV缺失键抛出KeyError

错误根因

直接使用dic[键名]读取字典值时,若JSON条目不存在对应键,会直接抛出KeyError异常,不符合你缺失键填充默认值的需求。

修复方案

使用Python字典内置的get()方法取值,该方法支持传入第二个参数作为键不存在时返回的默认值,这里我们默认填充空字符串,你可以根据需求调整为None、'-'等其他默认值。
修改后完整代码如下:

import csv
import json
import sys
import codecs

def trans(path):
    jsonData = codecs.open('C:/Users/jeri/Desktop/1.json', 'r', 'utf-8')
    csvfile = open('C:/Users/jeri/Desktop/1.csv', 'w', newline='', encoding='utf-8')  
    writer = csv.writer(csvfile, delimiter=',')
    keys = ['dob','firstname','lastname']
    writer.writerow(keys)

    for line in jsonData:
        dic = json.loads(line)
        # 改用get方法取值,缺失键返回空字符串
        writer.writerow([dic.get('dob', ''), dic.get('firstname', ''), dic.get('lastname', '')])

    jsonData.close()
    csvfile.close()

if __name__ == '__main__':
    path = str(sys.argv[0])
    print(path)
    trans(path)

可选优化建议

  • 建议使用with上下文管理器管理文件打开逻辑,无需手动调用close(),就算程序运行过程中抛出异常也能正确关闭文件,示例写法:
with codecs.open('C:/Users/jeri/Desktop/1.json', 'r', 'utf-8') as jsonData, \
     open('C:/Users/jeri/Desktop/1.csv', 'w', newline='', encoding='utf-8') as csvfile:
    # 所有文件读写逻辑都放在这个代码块内
  • 目前代码中传入的path参数未实际使用,若需要动态指定输入文件,可替换硬编码的文件路径为传入的path参数。

内容的提问来源于stack exchange,提问作者jeri teri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:27:04