>>> from env_helper import info; info()
页面更新时间: 2023-04-20 14:38:24
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-7-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

1.9. 格式化文本转换

电子表格不仅仅是 XLSX 格式,还有其他很多格式。

Python之xlsx文件与csv文件相互转换

使用openpyxl和csv模块来处理Excel文件和csv文件。

1.9.1. xlsx文件转csv文件

>>> import csv
>>> from openpyxl import load_workbook
>>> import codecs
>>> wb = load_workbook('drr_20200629.xlsx')
>>> a_sheet = wb.get_sheet_by_name('工作表2')
/tmp/ipykernel_237795/3355747450.py:5: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
  a_sheet = wb.get_sheet_by_name('工作表2')

使用load_workbook函数导入xlsx文件,获取表名为‘工作表2’的表格。

在这里打开csv文件使用的是codecs模块,codecs专门用作编码转换,当我们要做编码转换的时候可以借助codecs很简单的进行编码转换。接下来逐个读取xlsx文件中的内容,再写入csv文件中。

>>> with codecs.open('1.csv', 'w', encoding='utf-8') as f:
>>>     write = csv.writer(f)
>>>     for row in a_sheet.rows:
>>>         for cell in row:
>>>             print(cell.value)
>>>             write.writerow(str(cell.value))
name
age
Max
26
Marry
18
Nanncy
10

1.9.2. 使用第三方库pandas将xlsx文件转csv文件

Pandas是基于Numpy的专业数据分析工具,可以灵活高效的处理各种数据集,它提供了两种类型的数据结构,分别是DataFrame和Series,我们可以把DataFrame理解为Excel里面的一张表,而Series就是表中的某一列,后面学习和用到的所有Pandas操作,都是基于这些表和列进行的操作

将xlsx文件转csv文件pandas只需先读取xlsx文件,然后再以csv文件格式存起来。

>>> import pandas as pd
>>> data_xls = pd.read_excel('drr_20200629.xlsx', index_col=0,
>>> sheet_name='工作表2')
>>> data_xls.to_csv('1.csv', encoding='utf-8')

1.9.3. csv文件转换成xlsx文件

使用csv模块打开并读取csv文件,然后创建表格并逐行写入csv文件内容,最后保存xlsx文件。

>>> import csv
>>> from openpyxl import Workbook
>>> with open('1.csv', 'r', encoding='utf-8') as f:
>>>     read = csv.reader(f)
>>>     workbook = Workbook()
>>>     sheet = workbook.create_sheet('Data', index=0)
>>>     l = 0
>>>     for line in read:
>>>         r = 0
>>>         for i in line:
>>>             x=[l,r,i]
>>>             sheet.append(x)
>>>             r = r + 1
>>>         l = l + 1
>>>     workbook.save('1.xlsx')