对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 27 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
Python画图高斯分布的示例
Jul 10 Python
Python命令行click参数用法解析
Dec 19 Python
python3连接kafka模块pykafka生产者简单封装代码
Dec 23 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
如何基于Python实现word文档重新排版
Sep 29 Python
Python3读写ini配置文件的示例
Nov 06 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 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里得到前天和昨天的日期的代码
2007/08/16 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
JS中的进制转换以及作用
2016/06/26 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
js省市区级联查询(插件版&amp;无插件版)
2017/03/21 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
优雅地使用loading(推荐)
2019/04/20 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
使用python Django做网页
2013/11/04 Python
python列表操作实例
2015/01/14 Python
粗略分析Python中的内存泄漏
2015/04/23 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
python中嵌套函数的实操步骤
2019/02/27 Python
Python中关于浮点数的冷知识
2019/09/22 Python
Python argparse模块应用实例解析
2019/11/15 Python
python中def是做什么的
2020/06/10 Python
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
优秀中专生推荐信
2013/11/17 职场文书
给交警的表扬信
2014/01/12 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
进口业务员岗位职责
2014/04/06 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书