python json文件转csv/excel
2018-11-13 20:08
288 查看
原文链接:http://www.cnblogs.com/hcy-fly/p/9954393.html
今天遇到一个问题,有几份json文件需要转csv,网上有很多实现转化的现成代码,但是博主测试之后发现并不好使,因为多数代码都是基于简单深度=1的json数据来实现的,但博主的json数据深度>1,所以也并没有找到现成代码来使用,于是博主只好自己动手:
# 首先,我们捋一下思路,深度>1,就意味着我们如果单纯的想通过简单循环获取的话,必然要费脑子写一番逻辑,而深度=1时相对就比较容易处理,网上有很多现成资源 # 所以,我们可以分解实现
1、将复杂的json数据展开,从深度>1 ---> 深度=1
实现方法:jsoncsv(python现成的json转csv第三方工具包,没有安装的 pip install jsoncsv 安装一下,经过博主测试发现该工具包直接转csv效果不是很好,数据容易乱,但是用它展开json数据还是非常好用的)
jsoncsv -e raw.json expand.json #将原json文件数据展开 形成新数据文件
2、将 深度=1 的json数据 ---> csv数据
#coding=utf-8 import json import csv import sys reload(sys) sys.setdefaultencoding("utf-8") json_str = '[{"fav_average": "0", "ranking": "1", "category_ranking": "0", "fan_count": "4,167.9万", "title": "❤️会说话的刘二豆❤️", "comment_average": "5.4万", "ad_coin": 0, "huox_index": 985, "is_lines": "1", "period": "20181111", "ad_share": "4.0万", "fan_quality": "91", "coin_average": "0", "share_average": "40295.1", "up_average": "242.3万", "new_ranking": "1", "last_category_ranking": "0", "video_average": 0, "id": "67241", "pic_url": "https://huox-oa.oss-cn-beijing.aliyuncs.com/media/f723aaacf187937267245c528f4a1800.jpg?x-oss-process=image%2Fformat%2Cjpg&OSSAccessKeyId=jojQCyIiMYJoA2X3&Expires=1550283494&Signature=MSQlnyH7ejqm8I09lJIwcoCydns%3D", "ad_fav": 0}]' o = json.loads(json_str) def loop_data(o, k=''): global json_ob, c_line if isinstance(o, dict): for key, value in o.items(): if(k==''): loop_data(value, key) else: loop_data(value, k + '.' + key) elif isinstance(o, list): for ov in o: loop_data(ov, k) else: if not k in json_ob: json_ob[k]={} json_ob[k][c_line]=o def get_title_rows(json_ob): title = [] row_num = 0 rows=[] for key in json_ob: title.append(key) v = json_ob[key] if len(v)>row_num: row_num = len(v) continue for i in range(row_num): row = {} for k in json_ob: v = json_ob[k] if i in v.keys(): row[k]=v[i] else: row[k] = '' rows.append(row) return title, rows def write_csv(title, rows, csv_file_name): with open(csv_file_name, 'w') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=title) writer.writeheader() writer.writerows(rows) def json_to_csv(object_list): global json_ob, c_line json_ob = {} c_line = 0 # for ov in object_list : # for ov in object_list: # loop_data(ov) # c_line += 1 with open("json文件路径.json", "r") as f: for ov in f : ov = json.loads(ov.strip()) 7ff7 loop_data(ov) c_line += 1 title, rows = get_title_rows(json_ob) write_csv(title, rows, 'csv文件保存路径.csv') json_to_csv(o)
至此,csv文件转化完毕。
从csv转excel文件就不多说了,相信大家都会,excel就可以快速支持。
# 网上现成的小工具地址:https://json-csv.com/ (每天最多免费转换1M,超过1M下载需要收费) # http://kpoda.com/ (看评价好像挺好使的,但是博主用的时候发现并没有反应,大家可以试试)
希望对你有帮助。
转载于:https://www.cnblogs.com/hcy-fly/p/9954393.html
相关文章推荐
- python读写word、excel、csv、json文件
- python读写word、excel、csv、json文件
- python读写word、excel、csv、json文件
- python使用pandas处理excel文件转为csv文件的方法示例
- Python学习笔记 --- python将 excel 文件转化为 csv 文件 (07版本及以下 和 07版本及以上)
- python中写入csv,excel显示、pandas读取csv文件的编码问题
- 【Python】导出csv文件,解决Excel乱码
- python excel文件数据转成json
- Python导出数据到Excel可读取的CSV文件的方法
- 解决python3.6下scrapy中xpath.extract()匹配出来的内容转成json与.csv文件没有编码(unicode)的问题
- python-多语言功能-读excel文件并写入json,解决json输出unicode
- python 写csv文件,excel打开中文乱码解决方法
- python生产csv文件,并用php将其导出为excel可以打开的文件
- 用Python实现Excel导出Json文件
- 一文秒懂python读写csv xml json文件各种骚操作
- Python 读取EXCEL(XLS、CSV)写入txt文件
- Python程序:批理转化Excel成CSV文件
- python-读取excel,txt,csv文件
- python读取csv文件、excel文件并封装成dict类型的list,直接看代码
- python实现将excel文件转化成CSV格式