对python中xlsx,csv以及json文件的相互转化方法详解


Posted in Python onDecember 25, 2018

最近需要各种转格式,这里对相关代码作一个记录,方便日后查询。

xlsx文件转csv文件

import xlrd
import csv

def xlsx_to_csv():
  workbook = xlrd.open_workbook('1.xlsx')
  table = workbook.sheet_by_index(0)
  with codecs.open('1.csv', 'w', encoding='utf-8') as f:
    write = csv.writer(f)
    for row_num in range(table.nrows):
      row_value = table.row_values(row_num)
      write.writerow(row_value)

if __name__ == '__main__':
  xlsx_to_csv()

在2个文件之间转换,需要注意一个文件的字符转码问题

使用第三方库pandas将xlsx文件转csv文件

import pandas as pd


def xlsx_to_csv_pd():
  data_xls = pd.read_excel('1.xlsx', index_col=0)
  data_xls.to_csv('1.csv', encoding='utf-8')


if __name__ == '__main__':
  xlsx_to_csv_pd()

csv文件转换成xlsx文件

import csv
import xlwt

def csv_to_xlsx():
  with open('1.csv', 'r', encoding='utf-8') as f:
    read = csv.reader(f)
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet('data') # 创建一个sheet表格
    l = 0
    for line in read:
      print(line)
      r = 0
      for i in line:
        print(i)
        sheet.write(l, r, i) # 一个一个将单元格数据写入
        r = r + 1
      l = l + 1

    workbook.save('1.xlsx') # 保存Excel



if __name__ == '__main__':
  csv_to_xlsx()

使用pandas将csv文件转成xlsx文件

import pandas as pd

def csv_to_xlsx_pd():
  csv = pd.read_csv('1.csv', encoding='utf-8')
  csv.to_excel('1.xlsx', sheet_name='data')


if __name__ == '__main__':
  csv_to_xlsx_pd()

xlsx文件转json文件

from collections import OrderedDict
import json
import codecs



wb = xlrd.open_workbook('positive_previous.xlsx')

convert_list = []
sh = wb.sheet_by_index(0)
title = sh.row_values(0)
for rownum in range(1, sh.nrows):
  rowvalue = sh.row_values(rownum)
  single = OrderedDict()
  for colnum in range(0, len(rowvalue)):
    print(title[colnum], rowvalue[colnum])
    single[title[colnum]] = rowvalue[colnum]
  convert_list.append(single)

j = json.dumps(convert_list)

with codecs.open('positive_previous.json', "w", "utf-8") as f:
  f.write(j)

csv文件转化为json文件

# 下面的工具可以方便的将CSV格式文件转换成json文件格式

import sys, json

tip = """
请确保:
1. CSV格式是UTF-8
2. CSV第一行是键值

用法:
python csv2json.py foobar.csv
其中foobar.csv是需要转换的源数据文件

运行环境:
Python 3.4.3

日期:
2015年12月29日
"""
print(tip)

# 获取输入数据
input_file = sys.argv[1]
lines = open(input_file, "r", encoding="utf_8_sig").readlines()
lines = [line.strip() for line in lines]

# 获取键值
keys = lines[0].split(',')

line_num = 1
total_lines = len(lines)

parsed_datas = []
while line_num < total_lines:
    values = lines[line_num].split(",")
    parsed_datas.append(dict(zip(keys, values)))

    line_num = line_num + 1

json_str = json.dumps(parsed_datas, ensure_ascii=False, indent=4)
output_file = input_file.replace("csv", "json")

# write to the file
f = open(output_file, "w", encoding="utf-8")
f.write(json_str)
f.close()

print("解析结束!")

这段代码产生的键值不是按顺序来的,个人觉得可以改进一下。

以上这篇对python中xlsx,csv以及json文件的相互转化方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中optparse模块使用浅析
Jan 01 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
Python循环语句中else的用法总结
Sep 11 Python
Python操作MySQL数据库的三种方法总结
Jan 30 Python
python验证码识别实例代码
Feb 03 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
Python网络编程使用select实现socket全双工异步通信功能示例
Apr 09 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
HTML的form表单和django的form表单
Jul 25 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
pytorch标签转onehot形式实例
Jan 02 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 Python
解决python xlrd无法读取excel文件的问题
Dec 25 #Python
python读取xlsx的方法
Dec 25 #Python
Python 从列表中取值和取索引的方法
Dec 25 #Python
python 遍历列表提取下标和值的实例
Dec 25 #Python
python 用下标截取字符串的实例
Dec 25 #Python
python 实现倒排索引的方法
Dec 25 #Python
python截取两个单词之间的内容方法
Dec 25 #Python
You might like
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
JS继承 笔记
2011/07/13 Javascript
jquery中ajax学习笔记4
2011/10/16 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
简单理解JavaScript中的封装与继承特性
2016/03/19 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
2014/06/10 Python
详解Django框架中的视图级缓存
2015/07/23 Python
Python进程间通信之共享内存详解
2017/10/30 Python
Java分治归并排序算法实例详解
2017/12/12 Python
Python内建模块struct实例详解
2018/02/02 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
python+OpenCV实现图像拼接
2020/03/05 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
突袭HTML5之Javascript API扩展5—其他扩展(应用缓存/服务端消息/桌面通知)
2013/01/31 HTML / CSS
2019年Java面试必问之经典试题
2012/09/12 面试题
护士实习生自我鉴定范文
2013/12/10 职场文书
医学院毕业生自荐信范文
2014/03/06 职场文书
竞争上岗实施方案
2014/03/21 职场文书
财务会计实训报告
2014/11/05 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书