感觉发现了一个文档自动化编辑利器——python-docx

很久之前的一次为了应付检查,使用vb脚本还是什么来着搞了个文档名称和文档内关键词对比的小脚本,确认文档名称和文档内的关键词是否符合要求,由于当时是通过调用win下的word程序本身来进行的,因此效率比较低,相当于每次都要打开word程序对源文件进行处理后才能得出结果,脚本下对比完之后也很难进一步操作修改。

这几天闲来无事就想起来了这个事,就在网上搜索了一些,发现了可用于编辑word的python库,这就为我们进行文档的自动化操作提供了可能性,本文将对其基本功能和操作进行简单介绍,主要是参考官网给出的例子。

python-docx 官网 https://python-docx.readthedocs.io/en/latest/

安装

pip install python-docx

这个安装源好像不是很稳定,我来回试了三次才成功,如果pip安装不成功可以通过下载安装包后手动安装

tar xvzf python-docx-{version}.tar.gz
cd python-docx-{version}
python setup.py install

安装完成后显示

Collecting python-docx
  Downloading https://files.pythonhosted.org/packages/e4/83/c66a1934ed5ed8ab1dbb9931f1779079f8bca0f6bbc5793c06c4b5e7d671/python-docx-0.8.10.tar.gz (5.5MB)
    100% |████████████████████████████████| 5.5MB 12kB/s 
Requirement already satisfied: lxml>=2.3.2 in ./anaconda3/lib/python3.7/site-packages (from python-docx) (4.2.5)
Building wheels for collected packages: python-docx
  Running setup.py bdist_wheel for python-docx ... done
  Stored in directory: /home/.cache/pip/wheels/18/0b/a0/1dd62ff812c857c9e487f27d80d53d2b40531bec1acecfa47b
Successfully built python-docx
Installing collected packages: python-docx
Successfully installed python-docx-0.8.10

简单使用

安装完成后就试一下吧,在jupyter notebook中进行测试

from docx import Document
from docx.shared import Inches

document = Document()

document.add_heading('Document Title', 0)

p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True

document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='Intense Quote')

document.add_paragraph(
    'first item in unordered list', style='List Bullet'
)
document.add_paragraph(
    'first item in ordered list', style='List Number'
)

document.add_picture('123.jpg', width=Inches(1.25))

records = (
    (3, '101', 'Spam'),
    (7, '422', 'Eggs'),
    (4, '631', 'Spam, spam, eggs, and spam')
)

table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for qty, id, desc in records:
    row_cells = table.add_row().cells
    row_cells[0].text = str(qty)
    row_cells[1].text = id
    row_cells[2].text = desc

document.add_page_break()

document.save('demo.docx')

在上面的例子里,其中

document.add_picture('123.jpg', width=Inches(1.25))

表示插入一个图片,要保证工作目录里面有这个图片,否则就会报错

这个例子里面同时包含了对于文档标题、表格等元素的操作过程

运行后可以发现生成了demo.docx这个文档

通过下面的代码可以查看不同段落中的文字(序号从0开始)

document.paragraphs[2].text

展望

这里主要引用官方的例子进行了简单介绍,后面可以根据实际需求进行开发

此外,之前已经通过另外一个库实现了对pdf的操作,未来再看看xls文件等常用文档格式类型,形成对不同格式文档的自动化编辑工具

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值