社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用python-docx模块读写word文件

生信修炼手册 • 4 年前 • 614 次点击  
欢迎关注”生信修炼手册”!
word文档的自动化处理是一件比较头痛的事情,因为深耕于windows操作系统,对于跨平台需求的word文档编辑,是非常痛苦的一件事。在python的生态环境中,提供了python-docx这个模块,可以方便的进行跨平台的word文档处理,但是只适合word 2007以后的文档,即后缀为docx的文档。

处理excel文件,需要先创建一个workbook,与之对应,处理word文档,首先需要创建Document对象,用法如下

>>> from docx import Document
>>> document = Document()
Document用于表征一个具体的word文档,在此基础上,包含了常见的各种元素,常用的几个元素列表如下

1.heading

2.paragraph

3.page break

4.table

5.picture

1. heading

heading表示标题,通过add_heading方法,可以添加标题,用法如下

>>> document.add_heading('header')

我们编辑word文档的时候,可以有多种不同等级的标题,在该模块中,通过level参数可以指定不同的等级,取值范围为0-9,用法如下

>>> document.add_heading('header', level = 0)

2. paragraph

paragraph表示段落,通过add_paragraph方法添加段落,用法如下

>>> document.add_paragraph("First paragraph")

在段落的基础上,可以通过add_run来不断进行拼接,用法如下

>>> document.add_paragraph("北京欢迎您").add_run("welcome to Beijing")

add_run的用处在于针对部分文字,单独进行处理,比如设置其字体大小,颜色等,用法如下

>>> paragraph = document.add_paragraph("First Paragraph")
>>> text = paragraph.add_run('Bold Text')
>>> text.bold = True

3. page break

page break表示分页,通过add_page_break方法进行添加,用法如下

>>> document.add_page_break()

4. table

table表示表格,通过add_table函数进行添加,用法如下




    
>>> table = document.add_table(rows=2, cols=2)

创建表格之后,我们需要对单元格进行赋值, 有以下两种方法

# cell函数获取对应的单元格
>>> cell = table.cell(0, 0)
>>> cell.text = "cell"
>>> table.row[0].cells[0].text
#  通过rows和cells的结合获取对应的单元格
>>> table.rows[0].cells[0].text
'cell'

对于一个table, 可以通过如下方式进行遍历

>>> for row in table.rows:
...     for cell in row.cells:
...             print(cell.text)

5, picture

picture表示图片,通过add_picture函数进行添加,用法如下

>>> document.add_picture('imae.png')

对于word文档而言,除了基本元素之外,还有一个重大元素就是样式。对于字体的大小,颜色,间隔等等各种样式进行设置,从而呈现出一个美观的排版效果,这是word和普通的文本编辑器最大的不同之处。

在python-docx模块中,内置了可以用于段落,表格,文字的各种style, 详细列表见如下链接

https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html

style具有name, type等属性,通过如下方式可以访问具体的style

# 遍历所有的内置styles
>>> for i in document.styles:
... print(i.name)
...
# 用字典的方式访问style, key为style的名字
>>> document.styles['Normal']
_ParagraphStyle('Normal') id: 60660368
>>> document.styles['Colorful Grid Accent 6']
_TableStyle('Colorful Grid Accent 6') id: 60660440
>>> document.styles['Medium Grid 3']
_TableStyle('Medium Grid 3') id: 60660368
>>> document.styles['Strong']

以段落为例,应用style的用法如下




    
# 一步法
>>> paragraph = document.add_paragraph("Fisrt Paragraph", style="Normal")
>>> paragraph = document.add_paragraph("Fisrt Paragraph", style=document.styles['Normal'])
# 两步法
>>> paragraph = document.add_paragraph("Fisrt Paragraph")
>>> paragraph.style = "Normal"

style是针对特定元素排版的一整套规则,包含了很多的样式,对于单个属性的设置,通过style就太厚重了,此时可以使用特定的属性来设置。

python-docx将常用的一些属性设置成了内置的常量,保存在docx.enum模块中,比如设置段落对齐方式为居中对齐,用法如下

>>> from docx.enum.text import WD_ALIGN_PARAGRAPH
>>> paragraph = document.add_paragraph()
>>> paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER

完整的内置常量可以参考官方的API文档,对word文档编辑之后,可以如下方式另存为新的文档

>>> document.save('out.docx')

python-docx提供了一种跨平台的word自动化处理功能,对于简单排版的word处理,非常的好用。

·end·
—如果喜欢,快分享给你的朋友们吧—

原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!

本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。
  更多精彩
  写在最后
转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。

扫描下方二维码,关注我们,解锁更多精彩内容!

一个只分享干货的

生信公众号


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/99273
 
614 次点击