Python json to excel/csv
时间:2021-07-29
本文章向大家介绍Python json to excel/csv,主要包括Python json to excel/csv使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. json to excel
1 #!/usr/bin/python 2 # encoding: utf-8 3 # lib: pandas, flatten_json 4 # author: Chita 5 import json 6 import os 7 import time 8 import pandas as pd 9 from flatten_json import flatten 10 11 12 def json_to_excel(filename): 13 all_json_data_list = [] 14 all_json_keys_list = [] 15 16 # get all json content 17 with open(filename, "r", encoding="utf-8") as f: 18 for data in f: 19 json_data = json.loads(data) 20 # use flatten_json lib, flatten json in one line 21 ret = flatten(json_data) 22 all_json_data_list.append(ret) 23 all_json_keys_list.extend(ret.keys()) 24 25 # get all json keys as csv header 26 csv_header_list = list(set(all_json_keys_list)) 27 # keep original order 28 csv_header_list.sort(key=all_json_keys_list.index) 29 30 csv_data_list = [] 31 32 for data in all_json_data_list: 33 # fill the missing field, set value "" 34 _header = data.keys() 35 different_keys = list(set(csv_header_list).difference(set(_header))) 36 37 for key in different_keys: 38 data[key] = "" 39 csv_data_list.append(data) 40 41 # use pandas write the flatten json to excel 42 df = pd.DataFrame(csv_data_list, columns=csv_header_list) 43 df.to_excel(f"{filename.split('.')[0]}_Excel_Result_{int(time.time())}.xlsx", index=False, header=csv_header_list) 44 45 46 def start(json_path): 47 # folder 48 if os.path.isdir(json_path): 49 files = os.listdir(json_path) 50 for f in files: 51 json_file = os.path.join(json_path, f) 52 json_to_excel(json_file) 53 54 # json file 55 if os.path.isfile(json_path): 56 json_to_excel(json_path) 57 58 59 if __name__ == '__main__': 60 start("test.txt")
2. json to csv
1 #!/usr/bin/python 2 # encoding: utf-8 3 # lib: pandas, flatten_json 4 # author: Chita 5 import json 6 import os 7 import time 8 import pandas as pd 9 from flatten_json import flatten 10 11 12 def json_to_excel(filename): 13 all_json_data_list = [] 14 all_json_keys_list = [] 15 16 # get all json content 17 with open(filename, "r", encoding="utf-8") as f: 18 for data in f: 19 json_data = json.loads(data) 20 # use flatten_json lib, flatten json in one line 21 ret = flatten(json_data) 22 all_json_data_list.append(ret) 23 all_json_keys_list.extend(ret.keys()) 24 25 # get all json keys as csv header 26 csv_header_list = list(set(all_json_keys_list)) 27 # keep original order 28 csv_header_list.sort(key=all_json_keys_list.index) 29 30 csv_data_list = [] 31 32 for data in all_json_data_list: 33 # fill the missing field, set value "" 34 _header = data.keys() 35 different_keys = list(set(csv_header_list).difference(set(_header))) 36 37 for key in different_keys: 38 data[key] = "" 39 csv_data_list.append(data) 40 41 # use pandas write the flatten json to csv 42 df = pd.DataFrame(csv_data_list, columns=csv_header_list) 43 df.to_csv(f"{filename.split('.')[0]}_CSV_Result_{int(time.time())}.csv", index=False) 44 45 46 def start(json_path): 47 # folder 48 if os.path.isdir(json_path): 49 files = os.listdir(json_path) 50 for f in files: 51 json_file = os.path.join(json_path, f) 52 json_to_excel(json_file) 53 54 # json file 55 if os.path.isfile(json_path): 56 json_to_excel(json_path) 57 58 59 if __name__ == '__main__': 60 start("test.txt")
3. 测试数据 test.txt
{"a": 1, "b": {"b_1": 2}, "c": [1, 2, 3], "d": [{"d_2": "d2"}], "e": {"e_1": ["e1", "e2"]}} {"a": 2, "b": {"b_1": 2, "b_2": 3}, "d": [{"d_1": "d1"}], "e": {"e_1": ["e1", "e2"]}}
原文地址:https://www.cnblogs.com/chitalu/p/15076110.html
- 如果在BackgroundWorker运行过程中关闭窗体…
- 从数据到代码——基于T4的代码生成方式
- 解决T4模板的程序集引用的五种方案
- 编写T4模板进行代码生成无法避免的两个话题:"Assembly Locking"&"Debug"
- 从yield关键字看IEnumerable和Collection的区别
- 让“链式调用(方法链)”更加自然一点
- ASP.NET应用下基于SessionState的“状态编程框架”解决方案
- 为自定义配置的编辑提供”智能感知”的支持
- 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
- 在ASP.NET MVC中如何应用多个相同类型的ValidationAttribute?
- [ASP.NET MVC]如何定制Numeric属性/字段验证消息
- 为.NET Core项目定义Item Template
- 晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo
- 一个关于反序列化的小问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java 7 种阻塞队列详解
- protocol buffers 序列化数据
- dubbo的Failed to save registry store file问题
- TDSQL 安装部署(多图预警)
- Table has no partition for value 20190507
- Greenplum 对JSON的支持(最新版)
- iOS 音视频接入-音视频基础
- PHP的bz2压缩扩展工具
- PHP的命令行扩展Readline相关函数学习
- Goland中使用Golang命令行工具
- MHA搭建之ssh互信打通脚本
- pt-slave-restart工具
- 二叉树:层序遍历登场!
- 二叉树:前中后序迭代方式的写法就不能统一一下么?
- 二叉树:听说递归能做的,栈也能做!