对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函数的参数的默认值所引发的问题的原因
Mar 30 Python
玩转python爬虫之cookie使用方法
Feb 17 Python
Python实现字符串与数组相互转换功能示例
Sep 22 Python
python smtplib模块自动收发邮件功能(一)
May 22 Python
Python基于最小二乘法实现曲线拟合示例
Jun 14 Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 Python
详解Django定时任务模块设计与实践
Jul 24 Python
Pytorch之view及view_as使用详解
Dec 31 Python
tensorflow 限制显存大小的实现
Feb 03 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
Python实现抖音热搜定时爬取功能
Mar 16 Python
Python循环之while无限迭代
Apr 30 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
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
JavaScript Chart 插件整理
2010/06/18 Javascript
nodejs中实现sleep功能实例
2015/03/24 NodeJs
jQuery实现复选框批量选择与反选的方法
2015/06/17 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
使用AutoJs实现微信抢红包的代码
2020/12/31 Javascript
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
python实现简单五子棋游戏
2019/06/18 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
HTML5中input[type='date']自定义样式与日历校验功能的实现代码
2017/07/11 HTML / CSS
美国一家著名的儿童鞋制造商:Stride Rite
2017/01/02 全球购物
手机配件第一品牌:ZAGG
2017/05/28 全球购物
售后服务承诺书
2014/03/26 职场文书
《故乡》教学反思
2014/04/10 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
全运会口号
2014/06/20 职场文书
财务科长个人对照检查材料
2014/09/18 职场文书
公司员工辞职信范文
2015/05/12 职场文书
教师工作证明范本
2015/06/12 职场文书