对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中的filter和lambda函数的使用
Apr 07 Python
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
Python 将RGB图像转换为Pytho灰度图像的实例
Nov 14 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
python实现诗歌游戏(类继承)
Feb 26 Python
详解Python 函数如何重载?
Apr 23 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
python 叠加等边三角形的绘制的实现
Aug 14 Python
使用Django搭建网站实现商品分页功能
May 22 Python
python 窃取摄像头照片的实现示例
Jan 08 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阻止页面后退的方法分享
2014/02/17 PHP
php伪静态之APACHE篇
2014/06/02 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
2013/12/23 Javascript
jquery插件jTimer(jquery定时器)使用方法
2013/12/23 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
微信小程序 页面传参实例详解
2016/11/16 Javascript
js中this对象用法分析
2018/01/05 Javascript
JS中appendChild追加子节点无效的解决方法
2018/10/14 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
python实现指定字符串补全空格的方法
2015/04/30 Python
详解Python编程中time模块的使用
2015/11/20 Python
Python常用的内置序列结构(列表、元组、字典)学习笔记
2016/07/08 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
完美解决keras保存好的model不能成功加载问题
2020/06/11 Python
django有哪些好处和优点
2020/09/01 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
设计师珠宝:Ylang 23
2018/05/11 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
劳资员岗位职责
2013/11/11 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
入党自我评价优缺点
2014/01/25 职场文书
法学个人求职信范文
2014/01/27 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
面试自我评价范文
2014/09/17 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏