python-docx快速入门

使用背景:学校的毛概新题库无题目标号,看了一些题目过一段时间后又忘记看到哪里了,而且还不知道自己看到第几个题目,于是想用python给它加上序号。这里我用到了python-docx模块处理word文档。

pyhton-docx快速入门

官方文档连接:https://python-docx.readthedocs.io/en/latest/

(1) 创建一个document
from docx import Document

document = Document()

这将打开一个基于默认“模板”的空白文档,几乎是使用内置默认值在Word中启动新文档时获得的文档。

(2) 添加段落

段落是Word中的基础。 它们用于正文,但也用于标题和列表项目。这是添加一个最简单的方法:
paragraph = document.add_paragraph('Lorem ipsum dolor sit amet.')
此方法返回对文档末尾新添加的段落的引用。
也可以使用一个段落作为光标并在其上方插入一个新段落:
prior_paragraph = paragraph.insert_paragraph_before('Lorem ipsum')

(3) 添加标题

document.add_heading('The role of dolphins', level=2)
如果指定级别0,则添加“标题”段落。 这可以很方便地启动一个没有单独标题页的相对较短的文档。

…还有许多功能不再缀述,更详细可察看官方文档,下面是官方文档的一个domo

demo
# -- coding: GBK --
from docx import Document
from docx.shared import Inches

# 创建一个文档对象
document = Document()

# 创建标题
document.add_heading('Document Title', 0)

# 添加段落,add_run在段落上添加更多内容
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('monty-truth.png', 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')

效果如下:
在这里插入图片描述

实现需求
# -- coding: GBK --
from docx import Document

doc = Document('2018毛概机考题库附答案-(完整版)--思政云(1).docx')
n = 1
for i in range(0, len(doc.paragraphs)):
    if '=' in doc.paragraphs[i].text:
        doc.paragraphs[i+1].text = str(n)+'.'+doc.paragraphs[i+1].text
        n += 1

doc.save('demo.docx')

我太天真了,以为就用个for循环能解决问题,殊不知这个毛概**可有24w字,跑了有十分钟吧。。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值