对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使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
几种实用的pythonic语法实例代码
Feb 24 Python
在双python下设置python3为默认的方法
Oct 31 Python
Python实现针对json中某个关键字段进行排序操作示例
Dec 25 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
谈谈Python中的while循环语句
Mar 10 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
Mar 14 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
python3 批量获取对应端口服务的实例
Jul 25 Python
py-charm延长试用期限实例
Dec 22 Python
python实现取余操作的简单实例
Aug 16 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/12/10 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
获取URL文件名后缀
2013/10/24 PHP
php preg_replace替换实例讲解
2013/11/04 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
JavaScript 学习初步 入门教程
2010/03/25 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
2010/04/01 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
jQuery实现点击关注和取消功能
2017/07/03 jQuery
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python编码爬坑指南(必看)
2016/06/10 Python
利用Python读取文件的四种不同方法比对
2017/05/18 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
django-allauth入门学习和使用详解
2019/07/03 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
纯CSS实现设置半个字符的样式
2014/07/03 HTML / CSS
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
就业协议书范本
2014/04/11 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
2016党员入党决心书
2015/09/22 职场文书
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技