对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简单实现Base64编码和解码的方法
Apr 29 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
Apr 12 Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
python Django里CSRF 对应策略详解
Aug 05 Python
django框架auth模块用法实例详解
Dec 10 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
python的列表List求均值和中位数实例
Mar 03 Python
从0到1使用python开发一个半自动答题小程序的实现
May 12 Python
Python字符串常规操作小结
Apr 03 Python
python神经网络Xception模型
May 06 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安装攻略:常见问题解答(三)
2006/10/09 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
Javascript实现的分页函数
2006/12/22 Javascript
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
document.createElement()用法
2013/03/13 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
js定时器实现倒计时效果
2017/11/05 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
python对绑定事件的鼠标、按键的判断实例
2019/07/17 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
python rolling regression. 使用 Python 实现滚动回归操作
2020/06/08 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
信息技术毕业生自荐信范文
2014/03/13 职场文书
学校评语大全
2014/05/06 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS