Python 操作 Word

上次给大家介绍了 Python 如何操作 Excel ,是不是感觉还挺有趣的,今天为大家再介绍下,用 Python 如何操作 Word ,这个可能跟数据处理关系不大,用的也不多,不过可以先了解下都能实现什么功能,以备不时之需。

安装 python-docx

处理 Word 需要用到 python-docx 库,目前版本为 0.8.10 ,执行如下安装命令:

复制代码
$ pip3 install python-docx################# 运行结果 ################Collecting python-docx  Downloading https://files.pythonhosted.org/packages/e4/83/c66a1934ed5ed8ab1dbb9931f1779079f8bca0f6bbc5793c06c4b5e7d671/python-docx-0.8.10.tar.gz (5.5MB)     |████████████████████████████████| 5.5MB 553kB/sRequirement already satisfied: lxml>=2.3.2 in /usr/local/lib/python3.7/site-packages (from python-docx) (4.4.1)Building wheels for collected packages: python-docx  Building wheel for python-docx (setup.py) ... done  Stored in directory: /Users/mjg/Library/Caches/pip/wheels/18/0b/a0/1dd62ff812c857c9e487f27d80d53d2b40531bec1acecfa47bSuccessfully built python-docxInstalling collected packages: python-docxSuccessfully installed python-docx-0.8.10

OK,如果提示以上信息则安装成功。

写入 Word

平时我们在操作 Word 写文档的时候,一般分为几部分:标题、章节、段落、图片、表格、引用以及项目符号编号等。下面我们就按这几部分如何用 Python 操作来一一介绍。

标题

文档标题创建比较简单,通过 Document() 创建出一个空白文档,只要调用 add_heading 方法就能创建标题。​​​​​​​

复制代码
# word_1.py
# 导入库from docx import Documentfrom docx.shared import Ptfrom docx.shared import Inchesfrom docx.oxml.ns import qn
# 新建空白文档doc1 = Document()
# 新增文档标题doc1.add_heading('如何使用 Python 创建 Word',0)
# 保存文件doc1.save('word1.docx')

这样就完成了创建文档和文章标题的操作,下面通过命令 python word_1.py 运行程序,会生成名为 word1.docx 的文档,打开文章显示如下图所示:

标题

章节与段落

有了文章标题,下面我们来看章节和段落是怎么操作的,在上面代码后面增加章节和段落操作的代码如下:​​​​​​​

复制代码
# word_1.py
# 导入库from docx import Documentfrom docx.shared import Ptfrom docx.shared import Inchesfrom docx.oxml.ns import qn
# 新建空白文档doc1 = Document()
# 新增文档标题doc1.add_heading('如何使用 Python 创建 Word',0)
# 创建段落描述doc1.add_paragraph('我们平时使用 Word 用来做文章的处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作......')
# 创建一级标题doc1.add_heading('安装 python-docx 库',1)
# 创建段落描述doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:')
# 创建二级标题doc1.add_heading('第一步:安装 Python',2)
# 保存文件doc1.save('word1.docx')

上面我们说了 add_heading 方法用来增加文章标题,不过通过上面代码我们能知道,这个方法的第二上参数为数字,其实这个就是用来标示几级标题的,在我们平时就用来标示章节。add_paragraph 方法则是用来在文章中增加段落的,那我们现在就通过命令 python word_1.py 运行程序看下效果:

章节段落

字体和引用

前面我们通过 add_paragraph 方法增加了两个段落,现在我们就看下如何对段落中字体如何操作,以及引用段落的操作。继续修改以上代码,增加对文章字体字号、加粗、倾斜等操作,具体代码如下:​​​​​​​

复制代码
# word_1.py
# 导入库from docx import Documentfrom docx.shared import Ptfrom docx.shared import Inchesfrom docx.oxml.ns import qnfrom docx.shared import RGBColor
# 新建空白文档doc1 = Document()
# 新增文档标题doc1.add_heading('如何使用 Python 创建 Word',0)
# 创建段落描述doc1.add_paragraph('我们平时使用 Word 用来做文章的处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作......')
# 创建一级标题doc1.add_heading('安装 python-docx 库',1)
# 创建段落描述doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:')
# 创建二级标题doc1.add_heading('第一步:安装 Python',2)
# 创建段落,添加文档内容paragraph = doc1.add_paragraph('这是第一步的安装描述!')
# 段落中增加文字,并设置字体字号run = paragraph.add_run('(注意:这里设置了字号为20)')run.font.size = Pt(20)
# 设置英文字体run = doc1.add_paragraph('这里设置英文字体:').add_run('This Font is Times New Roman ')run.font.name = 'Times New Roman'
# 设置中文字体run = doc1.add_paragraph('这里设置中文字体:').add_run('当前字体为黑体')run.font.name='黑体'r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
# 设置斜体run = doc1.add_paragraph('这段设置:').add_run('文字的是斜体 ')run.italic = True
# 设置粗体run = doc1.add_paragraph('这段再设置:').add_run('这里设置粗体').bold = True
# 设置字体带下划线run = doc1.add_paragraph('这段为下划线:').add_run('这里设置带下划线').underline = True
# 设置字体颜色run = doc1.add_paragraph('这段字体为红色:').add_run('这里设置字体为红色')run.font.color.rgb = RGBColor(0xFF, 0x00, 0x00)
# 增加引用doc1.add_paragraph('这里是我们引用的一段话:人生苦短,我用Python。', style='Intense Quote')
# 保存文件doc1.save('word1.docx')

上面代码主要是针对段落字体的各种设置,每段代码都标有注释应该比较容易理解,现在通过命令 python word_1.py 运行程序看下效果:

字体引用

项目列表

我们平时在使用 Word 时,为了能展示更清晰,会用到项目符号和编号,将内容通过列表的方式展示出来,下面我们新建一个文件 word_2.py 并编写如下代码:​​​​​​​

复制代码
# word_2.py# 导入库from docx import Documentfrom docx.shared import Ptfrom docx.shared import Inchesfrom docx.oxml.ns import qn# 新建文档doc2 = Document()doc2.add_paragraph('哪个不是水果:')# 增加无序列表doc2.add_paragraph(    '苹果', style='List Bullet')doc2.add_paragraph(    '香蕉', style='List Bullet')doc2.add_paragraph(    '馄炖', style='List Bullet')doc2.add_paragraph('2020年度计划:')# 增加有序列表doc2.add_paragraph(    '每周健身一天', style='List Number')doc2.add_paragraph(    '学习50本书', style='List Number')doc2.add_paragraph(    '减少加班时间', style='List Number')# 保存文件doc2.save('word2.docx')

现在通过命令 python word_2.py 运行程序看下效果:

项目列表

图片和表格

我们平时编辑文章时,插入图片和表格也是经常使用到的,那用 Python 该如何操作插入图片和表格?首先我们随便找了个图片,我这用了 Python 安装时的一张截图,文件名为 python_install.png,然后在 word_2.py 文件中增加如下代码:​​​​​​​

复制代码
# word_2.py# 导入库from docx import Documentfrom docx.shared import Ptfrom docx.shared import Inchesfrom docx.oxml.ns import qn# 新建文档doc2 = Document()doc2.add_paragraph('哪个不是水果:')# 增加无序列表doc2.add_paragraph(    '苹果', style='List Bullet')doc2.add_paragraph(    '香蕉', style='List Bullet')doc2.add_paragraph(    '馄炖', style='List Bullet')doc2.add_paragraph('2020年度计划:')# 增加有序列表doc2.add_paragraph(    '每周健身一天', style='List Number')doc2.add_paragraph(    '学习50本书', style='List Number')doc2.add_paragraph(    '减少加班时间', style='List Number')doc2.add_heading('图片',2)# 增加图像doc2.add_picture('python_install.png', width=Inches(5.5))doc2.add_heading('表格',2)# 增加表格,这是表格头table = doc2.add_table(rows=1, cols=3)hdr_cells = table.rows[0].cellshdr_cells[0].text = '编号'hdr_cells[1].text = '姓名'hdr_cells[2].text = '职业'# 这是表格数据records = (    (1, '张三', '电工'),    (2, '张五', '老板'),    (3, '马六', 'IT'))# 遍历数据并展示for id, name, work in records:    row_cells = table.add_row().cells    row_cells[0].text = str(id)    row_cells[1].text = name    row_cells[2].text = work# 手动增加分页doc2.add_page_break()# 保存文件doc2.save('word2.docx')

OK,现在再来让我们再来看下效果:

图片表格

读取 Word 文件

上面写了很多用 Python 创建空白 Word 文件格式化字体并保存到文件中,接下来我们再简单介绍下如何读取已有的 Word 文件,请看如下代码:​​​​​​​

复制代码
# word_3.py# 引入库from docx import Document# 打开文档1doc1 = Document('word1.docx')# 读取每段内容pl = [ paragraph.text for paragraph in doc1.paragraphs]print('###### 输出word1文章内容')# 输出读取到的内容for i in pl:    print(i)# 打开文档2doc2 = Document('word2.docx')print('\n###### 输出word2文章内容')pl2 = [ paragraph.text for paragraph in doc2.paragraphs]# 输出读取到的内容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='  ')        print()    print('\n')

以上代码是将之前我们输出的两个文档内容都读取出来,当然这里只是打印到控制台,并没有做其他处理。现在我们来执行命令 python word_3.py 把代码执行看下结果:

读取并打印

总结

本文为大家介绍了 Python 中如何操作 Word 文档,其中写入文件时,我们常用各种标题段落字体设置等,会比较复杂,这里只是简单介绍了最常用的几种方法,如果想了解更多请参考文末官网介绍,之后会为大家介绍其他类型文件的操作方式,希望大家能多多关注。

相关推荐
小白—人工智能1 分钟前
数据可视化 —— 直方图
python·信息可视化·数据可视化
大模型真好玩28 分钟前
初学者必看大模型微调指南:Unsloth官方微调技巧大公开!
人工智能·python
谈不譚网安42 分钟前
初识Python
开发语言·python
慕雪华年1 小时前
【Python】使用uv管理python虚拟环境
开发语言·python·ai·uv·mcp
跳跳糖炒酸奶2 小时前
第二章、Isaaclab强化学习包装器(1)
人工智能·python·算法·ubuntu·机器人
witton2 小时前
记一次pdf转Word的技术经历
pdf·乱码·word·pymupdf·mupdf·mupdf.js·winansiencoding
Dxy12393102162 小时前
python合并一个word段落中的run
python·word
来自星星的坤2 小时前
如何优雅地解决AI生成内容粘贴到Word排版混乱的问题?
人工智能·chatgpt·word
高效匠人3 小时前
Python中的Walrus运算符分析
java·服务器·python
一个天蝎座 白勺 程序猿3 小时前
Python爬虫(9)Python数据存储实战:基于pymysql的MySQL数据库操作详解
数据库·python·mysql