对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字符编码与函数的基本使用方法
Sep 30 Python
Python二叉树定义与遍历方法实例分析
May 25 Python
Tesserocr库的正确安装方式
Oct 19 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python实现图片九宫格分割
Mar 07 Python
python视频按帧截取图片工具
Jul 23 Python
python 内置函数汇总详解
Sep 16 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
Python如何给函数库增加日志功能
Aug 04 Python
python3.5的包存放的具体路径
Aug 16 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 Python
Python标准库pathlib操作目录和文件
Nov 20 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 操作调试的方法
2012/07/12 PHP
php制作unicode解码工具(unicode编码转换器)代码分享
2013/12/24 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
不安全的常用的js写法
2009/09/15 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
jQuery实现仿百度帖吧头部固定导航效果
2015/08/07 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
vue,angular,avalon这三种MVVM框架优缺点
2016/04/27 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
Python常用库推荐
2016/12/04 Python
Python加载带有注释的Json文件实例
2018/05/23 Python
Python使用matplotlib实现基础绘图功能示例
2018/07/03 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
python requests证书问题解决
2019/09/05 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
表彰先进集体通报
2014/01/12 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
热情服务标语
2014/10/07 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技