300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Python代码删除word文档中指定页码的内容

Python代码删除word文档中指定页码的内容

时间:2022-03-20 20:16:45

相关推荐

Python代码删除word文档中指定页码的内容

直接删除指定页码的方法暂时还为解决,因为用docx库获取底部页码有点难度。

1.思路

但是,可以换个思路,

在开始页码的一行插入一个尽可能长的开始字符串(长一点避免识别错误,代码中的开始关键字),

在结尾页码的最后一行插入一个尽可能长的结束字符串(长一点避免识别错误,代码中的结束关键字),

然后删除两个字符串之间的内容,就相当于删除了指定页码内的内容。

2.适用情况

2.1.文档内容较多、文档个数较少时可以采用这种方式来处理:在文档中手动插入开始与结束字符串,然后运行代码。

2.2.文档个数较多时,可以考虑其他方法。

3.代码

下面代码仅供参考。

​# 删除docx中指定关键字之间的内容from docx import Documentimport re# 删除段落函数def delete_paragraph(paragraph):p = paragraph._elementp.getparent().remove(p)p._p = p._element = None# 寻找字符并删除:若已知起始段,可直接改range的其起始段def delete_content_between(doc, start_keyword, end_keyword):# 段落序号:i# 删除段落个数k = 0# 遍历文档的所有段落for i in range(0,len(doc.paragraphs)):# 如果已经完成删除工作,则退出寻找if k>0:break# 显示当前遍历的段落序号print('当前遍历段落序号:',i)paragraph = doc.paragraphs[i]# 获取段落文本内容text = paragraph.text# 使用正则表达式匹配起始关键字start_match = re.search(re.escape(start_keyword), text)if start_match:# 输出起始段落的信息print('起始关键字段落序号:',i)# 删除跨越多个段落的内容while True:# 统计并输出删除的段落个数k+=1print('已经删除段落个数:',k)# 获取起始关键字的段落next_paragraph = doc.paragraphs[i]next_text = next_paragraph.text# 寻找结束关键字的段落:找到则退出if re.search(re.escape(end_keyword), next_text):# 删除含有结束关键字的段落delete_paragraph(doc.paragraphs[i])break#没有结束则删除段落:下一段段落序号会顶上来,所以段落序号i不用变else:delete_paragraph(doc.paragraphs[i])# 保存修改后的文档doc.save('output.docx')# 打开 Word 文档doc = Document('11.docx')# 指定要删除的内容之间的关键字# 开始关键字start_keyword = 'start'# 结束关键字end_keyword = 'end123456789'# 删除指定关键字之间的内容delete_content_between(doc, start_keyword, end_keyword)​

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。