优质文章,第一时间送达!
Python 操作 Excel
常用工具
数据处理是 Python 的一大应用场景,而 Excel 又是当前最流行的数据处理软件。因此用 Python 进行数据处理时,很容易会和 Excel 打起交道。得益于前人的辛勤劳作,Python 处理 Excel 已有很多现成的轮子,比如 xlrd & xlwt & xlutils
XlsxWriter
OpenPyXL
以上可以根据需求不同,选择合适的工具,现在为大家主要介绍下最常用的 xlrd & xlwt & xlutils 系列工具的使用。
xlrd & xlwt & xlutils 介绍
xlrd&xlwt&xlutils 是由以下三个库组成:
xlrd
xlwt
xlutils
安装库
安装比较简单,直接用 pip 工具安装三个库即可,安装命令如下:
$ pip install xlrd xlwt xlutils
写入 Excel
接下来我们就从写入 Excel 开始,话不多说直接看代码如下:
答:如果您已经成功安装Python,那么对于初学者来说,你可以先在命令行下执行一些语句去看一下效果。 Python和C语言等有一些不一样,它可以逐行解析语句,如下所示,定义一个变量a的值。当你更深入的时候,你就可以使用一些。
创建 xls 文件对象wb = xlwt.Workbook 然后按照位置来添加数据,第一个参数是行,第二个参数是列 写入第二个sheetsh2.write(0,0,'总分')sh2.write(1,0,273)# 最后保存文件即可wb.save('test.xls')
运行代码,结果会看到生成名为 test.xls 的 Excel 文件,打开文件查看如下图所示:
读取 Excel
读取 Excel 其实也不难,请看如下代码:
打开刚才我们写入的 test_w.xls 文件wb = xlrd.open_workbook("test_w.xls") 获取并打印 sheet 名称print( "sheet 名称:",wb.sheet_names) 或者 sh = wb.sheet_by_name('成绩') 获取并打印某个单元格的值print( "第一行第二列的值为:",sh1.cell_value(0,1)) 获取第一行内容cols = sh1.col_values(1)打印获取的行列值print( "第一行的值为:",rows)print( "第二列的值为:",cols) 遍历所有表单内容for sh in wb.sheets:for r in range(sh.nrows):# 输出指定行print( sh.row(r))
输出如下结果:
细心的朋友可能注意到,这里我们可以获取到单元格的类型,上面我们读取类型时获取的是数字1
通过上面表格,我们可以知道刚获取单元格类型返回的数字1对应的就是字符串类型。
修改 excel
上面说了写入和读取 Excel 内容,接下来我们就说下更新修改 Excel 该如何操作,修改时就需要用到 xlutils 中的方法了。直接上代码,来看下最简单的修改操作:
打开 excel 文件readbook = xlrd.open_workbook("test_w.xls") 选取第一个表单sh1 = wb.get_sheet(0) 选取第二个表单sh1 = wb.get_sheet(1) 保存wb.save('test.xls')
从上面代码可以看出,这里的修改 Excel 是通过 xlutils 库的 copy 方法将原来的 Excel 整个复制一份,然后再做修改操作,最后再保存。看下修改结果如下:
格式转换操作
在平时我们使用 Excel 时会对数据进行一下格式化,python输入输出简单例子,或者样式设置,在这里把上面介绍写入的代码简单修改下,使输出的格式稍微改变一下,代码如下:
输出结果:
python-excel官网:www.python-excel.org
Python 操作 Word
安装 python-docx
处理 Word 需要用到 python-docx
0.8.10
$ pip install python-docxC:\Users\Y>pip install python-docxLooking in indexes:python-docxDownloading(5.5MB)|| 5.5MB 3.2MB/sRequirement already satisfied: lxml>=2.3.2 in c:\users\y\appdata\local\programs\python\python37\lib\site-packages (from python-docx) (4.5.0)Building wheels for collected packages: python-docxBuilding wheel for python-docx (setup.py) ... doneCreated wheel for python-docx: filename=python_docx-0.8.10-cp37-none-any.whl size=184496 sha256=7ac76d3eec848a255b4f197d07e7b78ab33598c814d536d9b3c90b5a3e2a57fbStored in directory: C:\Users\Y\AppData\Local\pip\Cache\wheels\05\7d\71\bb534b75918095724dc3d0fc035cedfe2f6c9a6cSuccessfully built python-docxInstalling collected packages: python-docxSuccessfully installed python-docx-0.8.10复制代码
OK,如果提示以上信息则安装成功。
写入 Word
平时我们在操作 Word 写文档的时候,一般分为几部分:标题
章节
段落
图片
表格
引用
项目符号编号
标题
文档标题创建比较简单,通过 Document
add_heading
新建空白文档doc1 = Document 保存文件doc1.save('word1.docx')
这样就完成了创建文档和文章标题的操作,下面运行程序,会生成名为 word1.docx 的文档,打开文章显示如下图所示:
方法如下:1.def函数 定义函数,调用函数。就是对一个新函数的自定义,有简单的函数也有复杂的函数。2.基本用法def function_name(parameters): return3.def使用位置 在这个关键字之后是标识函数的名字; 其次是在一对括号中。
章节与段落
有了文章标题,下面我们来看章节和段落是怎么操作的,在上面代码后面增加章节和段落操作的代码如下:
新建空白文档doc1 = Document 创建段落描述doc1.add_paragraph(' Word 文档在我们现在的生活和工作中都用的比较多,我们平时都使用 wps 或者 office 来对 Word 进行处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作……') 创建段落描述doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:') 创建段落描述doc1.add_paragraph('在python官网下载python安装包进行安装。') 创建段落描述doc1.add_paragraph('window下win+R输入CMD打开命令行,输入pip install python-docx即可下载。')# 保存文件doc1.save('word2.docx')
字体和引用
新建空白文档doc1 = Document 创建段落描述doc1.add_paragraph(' Word 文档在我们现在的生活和工作中都用的比较多,我们平时都使用 wps 或者 office 来对 Word 进行处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作……') 创建段落描述doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:') 创建段落描述doc1.add_paragraph('在python官网下载python安装包进行安装。') 创建段落描述doc1.add_paragraph('window下win+R输入CMD打开命令行,输入pip install python-docx即可下载。') 段落中增加文字,并设置字体字号run = paragraph.add_run('(注意:这里设置了字号为20)')run.font.size = Pt(20) 设置中文字体run = doc1.add_paragraph('这里设置中文字体:').add_run('当前字体为黑体')run.font.name='黑体'r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'),'黑体') 设置粗体run = doc1.add_paragraph('这段再设置:').add_run('这里设置粗体').bold = True 设置字体颜色run = doc1.add_paragraph('这段字体为红色:').add_run('这里设置字体为红色')run.font.color.rgb = RGBColor(0xFF,0x00,0x00) 保存文件doc1.save('word2.docx')
上面代码主要是针对段落字体的各种设置,每段代码都标有注释应该比较容易理解, 运行程序看下效果:
项目列表
我们平时在使用 Word 时,为了能展示更清晰,会用到项目符号和编号,将内容通过列表的方式展示出来,下面我们新建一个文件 word1.py 并编写如下代码:
新建文档doc2 = Documentdoc2.add_paragraph('哪个不是动物:') 增加有序列表doc2.add_paragraph('CSDN达到博客专家',style='List Number')doc2.add_paragraph('每周健身三天',style='List Number')doc2.add_paragraph('每天学习一个新知识点',style='List Number')doc2.add_paragraph('学习50本书',style='List Number')doc2.add_paragraph('减少加班时间',style='List Number')# 保存文件doc2.save('word1.docx')
图片和表格
我们平时编辑文章时,插入图片和表格也是经常使用到的,那用 Python 该如何操作插入图片和表格?首先我们随便找了个图片,我这用了 Python的logo 标志图,文件名为 python-logo.png,利用add_picture
add_table
新建文档doc2 = Documentdoc2.add_paragraph('哪个不是动物:') 增加有序列表doc2.add_paragraph('CSDN达到博客专家',style='List Number')doc2.add_paragraph('每周健身三天',style='List Number')doc2.add_paragraph('每天学习一个新知识点',style='List Number')doc2.add_paragraph('学习50本书',style='List Number')doc2.add_paragraph('减少加班时间',style='List Number')doc2.add_heading('图片',2) 增加表格,这是表格头table = doc2.add_table(rows=1,cols=4)hdr_cells = table.rows[0].cellshdr_cells[0].text = '编号'hdr_cells[1].text = '姓名'hdr_cells[2].text = '职业' 遍历数据并展示for id,name,work in records:row_cells = table.add_row.cellsrow_cells[0].text = str(id)row_cells[1].text = namerow_cells[2].text = work 保存文件doc2.save('word1.docx')
读取 Word 文件
上面写了很多用 Python 创建空白 Word 文件格式化字体并保存到文件中,接下来我们再简单介绍下如何读取已有的 Word 文件,请看如下代码:
打开文档1doc1 = Document('word1.docx') 输出读取到的内容for i in pl:print(i) 输出读取到的内容for j in pl2:print(j)# 读取表格材料,并输出结果tables = [table for table in doc2.tables]for table in tables:for row in table.rows:for cell in row.cells:print (cell.text,end=' ')printprint('\n')
Python 操作 CSV
简介
CSV
CSV
Comma-Separated Values
CSV 与 Excel
因为 CSV 文件与 Excel 文件默认都是用 Excel 工具打开,那他们有什么区别呢?我们通过下表简单了解一下。
基本使用
Python 通过 csv 模块来实现 CSV 格式文件中数据的读写,该模块提供了兼容 Excel 方式输出、读取数据文件的功能,这样我们无需知道 Excel 所采用 CSV 格式的细节,同样的它还可以定义其他应用程序可用的或特定需求的 CSV 格式。
csv 模块中使用 reader 类
writer 类
DictReader 类
DictWriter 类
python中的def命令是用来自定义函数的,具体使用方法如下。例如,自定义一个函数f(x)=2*x,就写为:deff(x):return2*x这个函数就构造完了。还可以构造多变量函数:deff(x,y):return2*x+y如果没有变量,就是常函数。
writer(csvfile,dialect=’excel’,**fmtparams)
返回一个 writer 对象
csvfile
可选参数 dialec
可选关键字参数 fmtparams
看下示例:
import csvwith open('test.csv','w',newline='') as csvfile:writer = csv.writer(csvfile)writer.writerow(['id','name','age'])# 写入多行data = [('1001','张三','21'),('1002','李四','31')]writer.writerows(data)
1、首先打开python并新建文档。2、其次输入相关的代码信息。3、最后点击运行即可数据分析分析
reader(csvfile,dialect=’excel’,**fmtparams)
返回一个 reader 对象
import csvwith open('test.csv',newline='') as csvfile:reader = csv.reader(csvfile,delimiter=' ')for row in reader:print(','.join(row))
Sniffer 类
用于推断 CSV 文件的格式,该类提供了如下两个方法:
sniff(sample,delimiters=None)
分析给定的 sample,如果给出可选的 delimiters 参数,则该参数会被解释为字符串,该字符串包含了可能的有效定界符。
has_header(sample)
分析示例文本(假定为 CSV 格式),如果第一行很可能是一系列列标题,则返回 True。
该类及方法使用较少,了解即可,下面通过一个示例简单了解一下。
import csvwith open('test.csv',newline='') as csvfile:dialect = csv.Sniffer.sniff(csvfile.read(1024))csvfile.seek(0)reader = csv.reader(csvfile,dialect)for row in reader:print(row)
Reader 对象
Reader 对象指 DictReader 实例和 reader 函数返回的对象,下面看一下其公开属性和方法。
next
返回 reader 的可迭代对象的下一行,返回值可能是列表或字典。
dialect
dialect 描述,只读,供解析器使用。
line_num
源迭代器已经读取了的行数。
fieldnames
字段名称,该属性为 DictReader 对象属性。
Writer 对象
Writer 对象指 DictWriter 实例和 writer 函数返回的对象,下面看一下其公开属性和方法。
writerow(row)
将参数 row 写入 writer 的文件对象。
install python,即代表未下载完成,输入pkg install python按提示操作即可;如果窗口显示Python的安装版本信息的话就代表成功。6、接下来是最后一步了,大家只需在下方打出:print("hello world"),激活Python即可。
writerows(rows)
将 rows_(即能迭代出多个上述_ row 对象的迭代器)中的所有元素写入 writer 的文件对象。
writeheader
在 writer 的文件对象中,写入一行字段名称,该方法为 DictWriter 对象方法。
dialect
dialect 描述,只读,供 writer 使用。
写读追加状态
'r':读'w':写'a':追加'r+' == r+w(可读可写,文件若不存在就报错(IOError))'w+' == w+r(可读可写,文件若不存在就创建)'a+' ==a+r(可追加可写,文件若不存在就创建)对应的,如果是二进制文件,就都加一个b就好啦:'rb' 'wb' 'ab' 'rb+' 'wb+' 'ab+
回复下方「关键词」,获取优质资源
回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版
回复关键词「m」,立即获取Python精选优质文章合集
回复关键词「」,将数字替换成 0 及以上数字,有惊喜好礼哦~
题图:pexels,CC0 授权。
1.下载Python安装包。2.解压Python安装包。tar -xzf Python-2.7.3.tgz3.在Python-2.7.3 根目录下运行。./configure#configure 命令执行完之后,会生成一个 Makefile 文件,这个 Makefile主要是被下一步的 make 命令。