对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 相关文章推荐
c++生成dll使用python调用dll的方法
Jan 20 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
Python读写配置文件的方法
Jun 03 Python
Python对象转JSON字符串的方法
Apr 27 Python
python实现冒泡排序算法的两种方法
Mar 10 Python
python实现输入数字的连续加减方法
Jun 22 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
Pytorch学习之torch用法----比较操作(Comparison Ops)
Jun 28 Python
Django返回HTML文件的实现方法
Sep 17 Python
Python Django项目和应用的创建详解
Nov 27 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 db类库进行数据库操作
2009/03/19 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
ecshop实现smtp发送邮件
2015/02/03 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
JS request函数 用来获取url参数
2010/05/17 Javascript
Javascript图像处理—亮度对比度应用案例
2013/01/03 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
Nodejs获取网络数据并生成Excel表格
2020/03/31 NodeJs
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
JavaScript实现三级联动效果
2017/07/15 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
js实现类选择器和name属性选择器的示例步骤
2021/02/07 Javascript
python求素数示例分享
2014/02/16 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python判断是否json是否包含一个key的方法
2018/12/31 Python
python ChainMap的使用和说明详解
2019/06/11 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
python迭代器常见用法实例分析
2019/11/22 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
小学师德标兵先进事迹材料
2014/05/25 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
先进个人申报材料
2014/12/30 职场文书
财产保全担保书
2015/01/20 职场文书
雾霾停课通知
2015/04/24 职场文书
阿甘正传观后感
2015/06/01 职场文书