利用python将json数据转换为csv格式的方法


Posted in Python onMarch 22, 2018

假设.json文件中存储的数据为:

{"type": "Point", "link": "http://www.dianping.com/newhotel/22416995", "coordinates": [116.37256372996957, 40.39798447055443], "category": "经济型", "name": "北京荷塘山庄", "count": "278", "address": "北京市怀柔区黄花城村安四路", "price": "380"}
{"type": "Point", "link": "http://www.dianping.com/newhotel/19717653", "coordinates": [116.56881588256466, 40.43310967948417], "category": "经济型", "name": "慕田峪长城鱼师傅乡村酒店", "count": "89", "address": "北京市怀柔区渤海镇苇店村(慕田峪长城下3公里处,近怀黄路)", "price": "258"}
{"type": "Point", "link": "http://www.dianping.com/newhotel/58365289", "coordinates": [116.62874974822378, 40.45610264855833], "category": "经济型", "name": "北京蜜桃儿亲子客栈", "count": "119", "address": "北京市怀柔区神堂峪风景区下官地11号", "price": "549"}

现在需要将上面的这些数据存为csv格式,其中字典的keys为csv中的属性名称,字典的values为csv中属性对应的值。

如果只需要按照json的keys来生成csv,那么操作比较简单,直接按照下面的方法即可:

#-*-coding:utf-8-*-
import csv
import json
import sys
import codecs
def trans(path):
 jsonData = codecs.open(path+'.json', 'r', 'utf-8')
 # csvfile = open(path+'.csv', 'w') # 此处这样写会导致写出来的文件会有空行
 # csvfile = open(path+'.csv', 'wb') # python2下
 csvfile = open(path+'.csv', 'w', newline='') # python3下
 writer = csv.writer(csvfile, delimiter='\t')
 flag = True
 for line in jsonData:
  dic = json.loads(line[0:-1])
  if flag:
   # 获取属性列表
   keys = list(dic.keys())
   print (keys)
   writer.writerow(keys) # 将属性列表写入csv中
   flag = False
  else:
   # 读取json数据的每一行,将values数据一次一行的写入csv中
   writer.writerow(list(dic.values()))
 jsonData.close()
 csvfile.close()
if __name__ == '__main__':
 path=str(sys.argv[1]) # 获取path参数
 print (path)
 trans(path)

在python3下运行,命令行输入

python C:\Users\MaMQ\Documents\jsonToCsv.py C:\Users\MaMQ\Documents\data\geoFood

其中第三个参数为需要转换的文件的路径和其名称,将其后缀删除。运行文件后即可得到转换后的csv文件。

如果需要对json文件中每个字典的key字段进行修改,比如需要将上面dict中的coordinate中的经纬度数据取出来存为x、y数据,则可以按照下面的方法(此方法还可以调整每个属性显示的顺序,效果更好一点):

import csv
import json
import sys
import codecs
def trans(path):
 jsonData = codecs.open(path+'.json', 'r', 'utf-8')
 # csvfile = open(path+'.csv', 'w') # 此处这样写会导致写出来的文件会有空行
 # csvfile = open(path+'.csv', 'wb') # python2下
 csvfile = open(path+'.csv', 'w', newline='') # python3下
 writer = csv.writer(csvfile, delimiter='\t')
 keys=['id', 'name', 'category', 'price', 'count', 'type', 'address', 'link', 'x', 'y']
 writer.writerow(keys)
 i = 1
 for dic in jsonData:
  dic = json.loads(dic[0:-1])
  x = dic['coordinates'][0]
  y = dic['coordinates'][1]
  writer.writerow([str(i),dic['name'],dic['category'],dic['price'],dic['count'],dic['type'],dic['address'],dic['link'],x,y])
  i += 1
 jsonData.close()
 csvfile.close()
if __name__ == '__main__':
 path = str(sys.argv[1])
 print (path)
 trans(path)

运行方法同上。

json文件是我在大众点评抓取的数据,存储格式为utf-8。建议使用codecs包来读取json数据,可指定编码方式。

jsonData = codecs.open(path + '.json', 'r', encoding='utf-8')

欢迎交流讨论。

以上这篇利用python将json数据转换为csv格式的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python解析网页源代码中的115网盘链接实例
Sep 30 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
Django项目中添加ldap登陆认证功能的实现
Apr 04 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
Python数据可视化:顶级绘图库plotly详解
Dec 07 Python
python实现串口通信的示例代码
Feb 10 Python
Python socket连接中的粘包、精确传输问题实例分析
Mar 24 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
python中的被动信息搜集
Apr 29 Python
python调试工具Birdseye的使用教程
May 25 Python
详解Flask开发技巧之异常处理
Jun 15 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 #Python
Python爬虫工程师面试问题总结
Mar 22 #Python
Python入门必须知道的11个知识点
Mar 21 #Python
python使用Tesseract库识别验证
Mar 21 #Python
python如何派生内置不可变类型并修改实例化行为
Mar 21 #Python
python如何通过实例方法名字调用方法
Mar 21 #Python
python如何为被装饰的函数保留元数据
Mar 21 #Python
You might like
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
jquery中常用的SET和GET
2009/01/13 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
jquery 滚动条事件简单实例
2013/07/12 Javascript
原生js获取元素样式的简单方法
2016/08/06 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
python的keyword模块用法实例分析
2015/06/30 Python
Python中文件I/O高效操作处理的技巧分享
2017/02/04 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
pandas中去除指定字符的实例
2018/05/18 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
python实现斗地主分牌洗牌
2020/06/22 Python
python算的上脚本语言吗
2020/06/22 Python
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
办公室副主任职责范本
2014/03/08 职场文书
初中学生评语大全
2014/04/24 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
综合办公室岗位职责
2015/04/11 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL