如何将json文件转成csv文件(python代码实操)

【将json文件转为csv文件】

开始文件格式如下:student_list.json

python 复制代码
[{"name":"赵甲","gender":"男","height":1.65,"weight":60,"stu_id":"2018312201","school":"信息","major":"信息管理"}
,{"name":"钱乙","gender":"女","height":1.75,"weight":70,"stu_id":"2018312202","school":"金融","major":"金融学"}
,{"name":"孙丙","gender":"男","height":1.85,"weight":80,"stu_id":"2018312203","school":"金融","major":"金融工程"}
,{"name":"李丁","gender":"女","height":1.95,"weight":90,"stu_id":"2018312204","school":"会计","major":"财务会计"}
,{"name":"周戊","gender":"男","height":1.65,"weight":60,"stu_id":"2018312205","school":"财政","major":"财政学"}
,{"name":"吴己","gender":"女","height":1.75,"weight":70,"stu_id":"2018312206","school":"税务","major":"税收学"}
,{"name":"郑庚","gender":"男","height":1.85,"weight":80,"stu_id":"2018312207","school":"保险","major":"保险学"}
,{"name":"王辛","gender":"女","height":1.65,"weight":60,"stu_id":"2018312208","school":"统数","major":"统计学"}
,{"name":"冯壬","gender":"男","height":1.75,"weight":70,"stu_id":"2018312209","school":"经济","major":"经济学"}
,{"name":"陈癸","gender":"女","height":1.85,"weight":80,"stu_id":"2018312210","school":"文传","major":"视觉传达"}]

目标文件格式如下:student_list2.csv

python 复制代码
name,gender,height,weight,stu_id,school,major
赵甲,男,1.65,60,2018312201,信息,信息管理
钱乙,女,1.75,70,2018312202,金融,金融学
孙丙,男,1.85,80,2018312203,金融,金融工程
李丁,女,1.95,90,2018312204,会计,财务会计
周戊,男,1.65,60,2018312205,财政,财政学
吴己,女,1.75,70,2018312206,税务,税收学
郑庚,男,1.85,80,2018312207,保险,保险学
王辛,女,1.65,60,2018312208,统数,统计学
冯壬,男,1.75,70,2018312209,经济,经济学
陈癸,女,1.85,80,2018312210,文传,视觉传达

运行python代码,将student_list.json文件中的json转成csv文件格式并保存到student_list2.csv文件中。

python 复制代码
import csv
import json

"""把json改写成csv"""

try:
    jsonname="student_list.json"
    f=open(jsonname,mode='r',encoding='utf-8')
except FileNotFoundError as e:
    print("Can not open file %s."%jsonname)
    exit()

try:
    csvname="student_list2.csv"
    f1=open(csvname,'w',newline='',encoding='utf-8')
except FileNotFoundError as e:
    print("Can not open file %s."%jsonname)
    exit()

student_list=json.load(f)
w=csv.writer(f1)

w.writerow(student_list[0].keys())
for each in student_list:
    w.writerow(each.values())

f.close()
f1.close()

上述代码中增加了try-except异常处理,如果出现FileNotFoundError的错误,就提示Can not open file 文件名。

运行成功后,会出现新文件student_list2.csv,内容如下图:

【补充常见的异常处理Exception】

1、AssertionError:断言语句失败

当assert这个关键字后边的条件为假时,程序将停止并抛出AssertionError异常。

2、AttributeError:尝试访问未知的对象属性

当访问的对象属性不存在时抛出异常。

3、IndexError:索引超出序列的范围

当索引超出序列范围的时候抛出IndexError异常。

4、KeyError:字典中查找一个不存在的关键字

当试图在字典中查找一个不存在的关键字时,就会抛出KeyError异常。

5、NameError:尝试访问一个不存在的变量

当试图访问一个不存在的变量时,会抛出NameError异常。

6、OSError:操作系统产生的异常

例如,打开一个不存在的文件就会引发FileNotFoundError,而这个FileNotFoundError就是OSError的子类

7、SyntaxError:Python的语法错误

如果程序有语法错误,就会引发SyntaxError异常,程序员应该尽力找到错误并改正。

8、TypeError:不同类型间的无效操作

不同类型的变量之间不能进行计算,否则会抛出TypeError异常。

9、ZeroDivisionError:除数为零

任何数除以零都会引发ZeroDivisionError异常。

【异常处理格式】

python 复制代码
try:
    检测范围
except Exception[as reason]:
    出现异常(Exception)后的处理代码
else:
    不出现异常的处理代码
finally:
    无论是否出现异常,均执行的代码
相关推荐
梦想的旅途25 分钟前
企业微信API实战:Python自动化消息推送
java·前端·python·自动化·企业微信
月光船幽幽9 分钟前
昆仑流形多模态融合新架构
人工智能·python
爱敲代码的憨仔16 分钟前
BM25全文检索
开发语言·python·全文检索
SamChan901 小时前
用Python+Requests批量翻译PDF:从脚本到调度
后端·python·microsoft·ai·pdf·机器翻译
草莓熊Lotso1 小时前
【LangChain】核心技术:嵌入模型与向量存储完全指南
服务器·网络·python·langchain
leisoo80979 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
WangYan20229 小时前
基于XGBoost与AI的生态—地学多源数据建模:植被与土地利用识别、土壤碳氮空间预测、生物多样性驱动机制、土壤微生物功能预测、生态退化与风险识别
python·机器学习·xgboost
码上上班10 小时前
tengine知识点
linux·服务器·centos
金銀銅鐵11 小时前
[Python] 借助 turtle 逐字展示唐诗《金缕衣》
python
雾时之林13 小时前
Linux--软件管理、源码包安装
linux·服务器·数据库