python - 如何使用 Python 删除 docx 文档中的某些段落?
问题描述
我有一个大的 .docx 文档。它有100多个段落。但是,我需要删除一些垃圾段落。例如,那些需要删除的段落有一个关键字“无”。如何使用 python 删除那些具有关键字“None”的段落。这是我目前所拥有的,但它只能删除空白段落。如何修改它以实现我的目标?
import docx
f = docx.Document(r"test.docx")
doc = docx.Document()
for para in f.paragraphs:
if para.text.count("\n") == len(para.text):
continue
else:
if not para.text[0].isalpha():
continue
doc.add_paragraph(para.text)
doc.save(r"test2.docx")
解决方案
您应该可以使用以下代码为简单的情况执行此操作:
def delete_paragraph(paragraph):
p = paragraph._element
p.getparent().remove(p)
p._p = p._element = None
对“已删除”段落对象的任何后续访问都将引发 AttributeError,因此您应该注意不要让引用一直徘徊,包括作为 Document.paragraphs 存储值的成员。
它还没有在库中的原因是因为一般情况要复杂得多,特别是需要检测和处理段落中可能出现的各种链接项目;图片、超链接或图表等。
但是,如果您确定这些都不存在,那么这几行应该可以完成工作。
推荐阅读
- c - 如何从 libcouchbase 编译示例代码
- python-3.x - 谷歌云功能在流数据到大查询时达到 10MB 速率限制,而不管使用块?
- php - PHP pdo 仅在查询被硬编码时获得结果
- angular - 动画时垫步内容消失 - mat-horizontal-stepper
- mapbox - Mapbox - 如何在 Mapbox 中添加 .pbf 文件作为图层?
- html - Woo Commerce Checkout Paypal 的东西似乎不起作用
- c# - 如何获取列表c#的所有项目
- c - 如何在C中存储一行的最后一个总和
- git - git rebase 重新散列未触及的提交
- python - 如何将两个列表连接在一起但频率不同