Python3-json3csv
import json
import csv
json_str = '[{"a":1,"b":"2","c":"3"},{"a":21,"c":"23","d":{"d1":"24"},"e":"25"}]'
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 k not 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):
# 输出文件名称 newline: 去掉csv中默认会写入空行的问题
with open(csv_file_name, 'w', newline='') 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:
loop_data(ov)
c_line += 1
title, rows = get_title_rows(json_ob)
write_csv(title, rows, 'test.csv')
json_to_csv(o)
Python3-json3csv的更多相关文章
- python3 threading初体验
python3中thread模块已被废弃,不能在使用thread模块,为了兼容性,python3将thread命名为_thread.python3中我们可以使用threading进行代替. threa ...
- Python3中的字符串函数学习总结
这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...
- Mac-OSX的Python3.5虚拟环境下安装Opencv
Mac-OSX的Python3.5虚拟环境下安装Opencv 1 关键词 关键词:Mac,OSX,Python3.5,Virtualenv,Opencv 2 概述 本文是一篇 环境搭建 的基础 ...
- Ubuntu部署python3.5的开发和运行环境
Ubuntu部署python3.5的开发和运行环境 1 概述 由于最近项目全部由python2.x转向 python3.x(使用目前最新的 python3.5.1) ,之前的云主机的的默认python ...
- Python3 登陆网页并保持cookie
网页登陆 网页登陆的原理都是,保持一个sessionid在cookie然后,根据sessionid在服务端找到cookie进行用户识别 python实现 由于python的简单以及丰富的类库是开发网络 ...
- 阿里云 SDK python3支持
最近的一个项目需要操作阿里云的RDS,项目使用python3,让人惊讶的是官方的SDK竟然只支持python2 在阿里云现有SDK上改了改,文件的修改只涉及aliyun/api/base.py,详见h ...
- python3爬取1024图片
这两年python特别火,火到博客园现在也是隔三差五的出现一些python的文章.各种开源软件.各种爬虫算法纷纷开路,作为互联网行业的IT狗自然看的我也是心痒痒,于是趁着这个雾霾横行的周末瞅了两眼,作 ...
- CentOS7中安装Python3.5
1.下载 https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz 2.上传到服务器 3. 安装相关依赖 yum install gcc ope ...
- 使用virtualenv搭建python3开发环境
问题描述 环境: CentOS6.5 想在此环境下使用python3进行开发,但CentOS6.5默认的python环境是2.6.6版本. 之前的做法是直接从源码安装python3,替换掉现有的开发环 ...
- 烂泥:python2.7和python3.5源码安装
本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天在centos6.6安装ansible时,一直提示python版本不对,导致不能安 ...
随机推荐
- Find Duplicate File in System
Given a list of directory info including directory path, and all the files with contents in this dir ...
- TUM 慕尼黑工业大学 MSEI 课程结构介绍 ws19/20
本文内容 根据德文 tum 官网介绍:https://www.ei.tum.de/studium/master-ei-msei/ 翻译,提取并且翻译成中文信息. 本文适用于ws19/20届的学生. 概 ...
- DRF 认证 权限 视图 频率
认证组件 使用:写一个认证类,继承BaseAuthentication 在类中写authenticate方法,把request对象传入 能从request对象中取出用户携带的token根据token判 ...
- dos2unix、diff命令
一.dos2unix:将DOS格式文件转化成UNIX格式文件 语法: dos2unix [选项] [文件...] [-n INFILE输出文件...] unix2dos [选项] ...
- redis 工具包
java通过jedis操作redis(从JedisPool到JedisCluster) redis作为一个缓存数据库,在绝大多数java项目开发中是必须使用的,在web项目中,直接配合spring-r ...
- Codeforces 1238C. Standard Free2play
传送门 题目别看错了,好像挺多人都读错了... 然后显然可以贪心,只有在需要用 $\text{magic crystals}$ 的时候才用 那么直接模拟即可 如果初始相邻两个突出的平台高度不连续那么我 ...
- 树莓派3B+和3B 安装64位debian GUN/Linux系统
请直接参考如下博客: https://blog.csdn.net/u013451404/article/details/80710136 如果是3B的树莓派用户,只需要把第一个分区boot里的.dtb ...
- O026、Nova组件详解
参考https://www.cnblogs.com/CloudMan6/p/5436855.html 本节开始,我们将详细讲解 Nova 的各个子服务. 前面架构概览一节知道 Nova 有若干 ...
- java实现spark常用算子之Union
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- 关于jar冲突的解决方向servlet-api
1.可以考虑尽量往 java自带的jar 靠 比如说jdk-tools 2.如果用springboot项目 让其他jar 排除servlet-api的依赖 <dependency> ...