对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实现的一个找零钱的小程序代码分享
Aug 25 Python
python实现根据窗口标题调用窗口的方法
Mar 13 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
python实现简易云音乐播放器
Jan 04 Python
使用Template格式化Python字符串的方法
Jan 22 Python
Python实现带下标索引的遍历操作示例
May 30 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
Jul 17 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
Laravel框架表单验证格式化输出的方法
Sep 25 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
Python简单实现区域生长方式
Jan 16 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 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对现有搜索引擎的调用
2013/06/25 PHP
php查询ip所在地的方法
2014/12/05 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
php实现zip文件解压操作
2015/11/03 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
CL vs ForZe BO5 第二场 2.13
2021/03/10 DOTA
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
layer.open 获取不到表单信息的解决方法
2019/09/26 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
详解Vue 单文件组件的三种写法
2020/02/19 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Python异常处理例题整理
2019/07/07 Python
python matplotlib库绘制条形图练习题
2019/08/10 Python
python 绘制场景热力图的示例
2020/09/23 Python
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
包装类的功能、种类、常用方法
2012/01/27 面试题
运动会闭幕式解说词
2014/02/21 职场文书
新春联欢会主持词
2014/03/24 职场文书
公务员政审单位鉴定材料
2014/05/16 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python