对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装饰器使用实例:验证参数合法性
Jun 24 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
python查看模块安装位置的方法
Oct 16 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
Python 调用 Outlook 发送邮件过程解析
Aug 08 Python
python+selenium 点击单选框-radio的实现方法
Sep 03 Python
python读取mysql数据绘制条形图
Mar 25 Python
Python实现微信表情包炸群功能
Jan 28 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实现统计代码行数小工具
2019/09/19 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
jquery利用json实现页面之间传值的实例解析
2016/12/12 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
Express URL跳转(重定向)的实现方法
2017/04/07 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
bootstrap基本配置_动力节点Java学院整理
2017/07/14 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
[01:08:30]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第一场 2月28日
2021/03/11 DOTA
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
python 反编译exe文件为py文件的实例代码
2019/06/27 Python
一个入门级python爬虫教程详解
2021/01/27 Python
Swisse官方海外旗舰店:澳大利亚销量领先,自然健康品牌
2017/12/15 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
大学毕业登记表自我鉴定
2013/10/09 职场文书
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书
安全承诺书格式范本
2015/04/28 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书