python word操作_使用 Python 操作 word文档

最近手头有一个需求是对word文档内容进行判断,搜索到一个包感觉不错,简单记录一下关键操作:

python-docx能做什么

  • 创建/读取 docx文档

  • 修改内容:包括段落格式、章节、标题、分页符、文档中的表格、插入图片等操作

基本上常用的功能都在里面了,我的需求是找到关键内容进行判断,因此这个包对于我来说够用。

安装

官方文档上支持3种安装方式,使用最常见的一种进行即可。

pip install python-docx

环境支持:

  • python2.6、2.7,or 3.4

  • lxml >= 2.3.2

快速开始

由于Word文档是二进制的文档,因此创建和读取所使用的方法有一些差别。几个关键的对象和等级区别:

最顶层是Document对象,其代表整个文档;
block-level(块等级),段落是常见的块等级,换行符结尾算一个段落,表格、图片和标题均属于块对象;对于块对象属性,常见有对齐(alignment)、缩进(indent)以及行间距(space)等等;
inline-level(内联等级),其属于块等级中,run是常见的内联等级,一个块对象可由多个run组成,特别是通过run可由设置不同属性样式;文字、句子、段落均可作为内联对象;对于内联对象属性,常见有字体、大小、对齐以及颜色等等

  • 如果要创建一个新的文档,需要:

from docx import Document
document = Document()


# 写一个段落
paragraph = document.add_paragraph('写一个新的段落')
prior_paragraph = paragraph.insert_paragraph_before('在上一个段落前写一点内容')


# 添加标题,默认是标题1
document.add_heading('这是标题')
document.add_heading('标题2', level=2)


# 添加分页符
document.add_page_break()

表格操作

# 添加一个表,通过table.cell()来访问其中的信息
table = document.add_table(rows=2, cols=2)


# 逐个添加内容
cell = table.cell(0, 1)
cell.text = 'parrot, possibly dead'

row = table.rows[1]
row.cells[0].text = 'Foo bar to you.'
heading_cells[0].text = 'Qty'

# 支持迭代,并逐行添加
items = (
    (7, '1024', 'Plush kittens'),
    (3, '2042', 'Furbees'),
    (1, '1288', 'French Poodle Collars, Deluxe'),
)

# 给每项添加行数据
for item in items:
    cells = table.add_row().cells

图片插入

from docx.shared import Inches
document.add_picture('测试图.png', width=Inches(1.0))

通常一个300dpi的300x300像素的图片大小是1英寸,若使用cm可以通过以下表示进行计算width = Inches(3) /thing_count

修改字体等格式

paragraph = document.add_paragraph('文档')
run = paragraph.add_run('加粗')
run.bold = True
paragraph.add_run('一下')

代码所展示的内容为 「文档加粗一下」,个人感觉还是很麻烦的,因此这边就不进行下去了。有挺多相关的文档可以查阅。

  • 如果对已有文档进行修改,需要:

from docx import Document
document = Document()
document.save('测试.docx')

document.save('新文档.docx')

注意:这个方法支持Word 2007及以后的版本;Word 2003及更早期的.doc文件无法使用

小应用

获取word文档中某一张表格记录的内容:

! pip install python-docx

import os
import re
import pandas as pd
from docx import Document
from docx.shared import Inches
os.chdir(r'C:\Users\DRP\Desktop')


document = Document('demo.docx')
tables = document.tables

res=[]
#docx库不支持doc格式
def read_table(docpath:str,n:int):
    '''docpath->word文件路径
    n->要读取文件中的第几个表格。从0开始
    返回表格数据的列表
    '''
    global res
    doc=Document(docpath)
    tb=doc.tables[n]
    for i in range(4,len(tb.rows)):
        data=[]
        row_cells=tb.rows[i].cells
        for  cell in row_cells:
            data.append(cell.text)
            print(data)
        res.append(data)
    return res

#获取文件中的第4个表格
table = tables[3]
for i in range(1, len(table.rows)): #从表格第二行开始循环读取表格数据
        idNum = table.cell(i,0).text #序号
        companyName = table.cell(i,1).text  #读取第二列
        print(companyName)

这样就可以获得表格中关键的内容了,后续即可以存入列表或者字典,或者对关键字进行检查。该方法适用于批量或者流程化提取、校验word文档内容。


推荐阅读

如何在 Rstudio 中使用 python 语言 (图文详解)

Python语言基础50课(3)|一行代码统计序列ATCG含量

4种绘制带误差线的柱形图

好看又好用的python可视化包

适用于任何学科| 10个好用的 Python数据可视化库

参考资料

官方文档:https://python-docx.readthedocs.io/en/latest/index.html

中文版:https://www.zybuluo.com/belia/note/1303813

KAI-Python操作docx文档 :https://www.bioinfo-scrounger.com/archives/693/


号外号外30d606c64078e5b62721d2d8b85777dd.png

我们生信技能树官方举办课程:

数据挖掘学习班第4期(线上直播3周,马拉松式陪伴,带你入门),原价4800的数据挖掘全套课程, 疫情期间半价即可抢购,仅需2399。

生信爆款入门-第6期(线上直播4周,马拉松式陪伴,带你入门),原价9600的生信入门全套课程,疫情期间3.3折即可抢购,仅需3199。

欢迎留言、转发、分享,我们下期见。

推荐阅读

f77dd2535bdaae2c6480a68ed70c527d.png

d6c97aa4978524c1065c26b00eff3240.png

01f1c63d7f518166a6beab5ef06e7060.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值