对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基础教程之基本内置数据类型介绍
Feb 20 Python
Django中实现点击图片链接强制直接下载的方法
May 14 Python
在类Unix系统上开始Python3编程入门
Aug 20 Python
Python程序中的观察者模式结构编写示例
May 27 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
解决Python安装时报缺少DLL问题【两种解决方法】
Jul 15 Python
python实现键盘输入的实操方法
Jul 16 Python
Python求解正态分布置信区间教程
Nov 20 Python
python画图常规设置方式
Mar 05 Python
python中sys模块是做什么用的
Aug 16 Python
python脚本框架webpy模板赋值实现
Nov 20 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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 stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
详解JS面向对象编程
2016/01/24 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
python装饰器初探(推荐)
2016/07/21 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
Python用for循环实现九九乘法表
2018/05/31 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
Python3的socket使用方法详解
2020/02/18 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
淘宝店铺营销方案
2014/02/13 职场文书
工商管理专业自荐信
2014/06/03 职场文书
国庆宣传标语
2014/06/30 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL