对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 21 Python
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
有关wxpython pyqt内存占用问题分析
Jun 09 Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 Python
教你用Type Hint提高Python程序开发效率
Aug 08 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
jupyter notebook清除输出方式
Apr 10 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
python time()的实例用法
Nov 03 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
如何在Python项目中引入日志
May 31 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
destoon数据库表说明汇总
2014/07/15 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
PHP开发注意事项总结
2015/02/04 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
小程序选项卡以及swiper套用(跨页面)
2020/06/19 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Python中super关键字用法实例分析
2015/05/28 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
 Alo Yoga官网:购买瑜伽服装
2018/06/17 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
UNIX特点都有哪些
2016/04/05 面试题
给客户的道歉信
2014/01/13 职场文书
小加工厂管理制度
2014/01/21 职场文书
公务员保密承诺书
2014/03/27 职场文书
2014年乡镇领导个人整改措施
2014/09/19 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
2014年销售助理工作总结
2014/12/01 职场文书
婚庆答谢词
2015/01/04 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
开票证明
2015/06/23 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
演讲稿之开卷有益
2019/08/07 职场文书