利用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日期的加减等操作的示例
Aug 15 Python
python导出hive数据表的schema实例代码
Jan 22 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
Python中的heapq模块源码详析
Jan 08 Python
Python中按键来获取指定的值
Mar 02 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
Django实现WebSSH操作物理机或虚拟机的方法
Nov 06 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
Sep 25 Python
完美处理python与anaconda环境变量的冲突问题
Apr 07 Python
Python实现天气查询软件
Jun 07 Python
Python编解码问题及文本文件处理方法详解
Jun 20 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
解决phpmyadmin 乱码,支持gb2312和utf-8
2006/11/20 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
深入php list()函数的详解
2013/06/05 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
基于jQuery的输入框在光标位置插入内容, 并选中
2011/10/29 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
JavaScript中的单引号和双引号报错的解决方法
2014/09/01 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
js中this的用法实例分析
2015/01/10 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
JQueryEasyUI之DataGrid数据显示
2016/11/23 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
在Python中操作列表之List.append()方法的使用
2015/05/20 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
pip install命令安装扩展库整理
2021/03/02 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
奥利奥广告词
2014/03/20 职场文书
文化活动实施方案
2014/03/28 职场文书
青年志愿者先进事迹
2014/05/06 职场文书
企业文化标语大全
2014/06/10 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
停发工资证明范本
2015/06/12 职场文书
安全生产标语口号
2015/12/26 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP