对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注释详解
Jun 01 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
Feb 26 Python
使用PyInstaller将python转成可执行文件exe笔记
May 26 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
python mysql中in参数化说明
Jun 05 Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 Python
Python爬虫代理池搭建的方法步骤
Sep 28 Python
Python经典五人分鱼实例讲解
Jan 04 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
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
php 判断字符串编码是utf-8 或gb2312实例
2016/11/01 PHP
jquery设置控件位置的方法
2013/08/21 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
js实现各种复制到剪贴板的方法(分享)
2016/10/27 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
js利用拖放实现添加删除
2020/08/27 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
python实现红包裂变算法
2016/02/16 Python
Python实现简单http服务器
2018/04/12 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
Python实现钉钉发送报警消息的方法
2019/02/20 Python
学习Django知识点分享
2019/09/11 Python
基于python操作ES实例详解
2019/11/16 Python
采购人员的个人自我评价
2014/01/16 职场文书
关于母亲节的感言
2014/02/04 职场文书
主管竞聘书范文
2014/03/31 职场文书
专项法律服务方案
2014/06/11 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
2014年医院工作总结
2014/11/20 职场文书
先进典型发言材料
2014/12/30 职场文书
电台广播稿范文
2015/08/19 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
Python函数中apply、map、applymap的区别
2021/11/27 Python
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis