首页 > 解决方案 > 如何使用 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") 

标签: pythondocxpython-docx

解决方案


您应该可以使用以下代码为简单的情况执行此操作:

def delete_paragraph(paragraph):
    p = paragraph._element
    p.getparent().remove(p)
    p._p = p._element = None

对“已删除”段落对象的任何后续访问都将引发 AttributeError,因此您应该注意不要让引用一直徘徊,包括作为 Document.paragraphs 存储值的成员。

它还没有在库中的原因是因为一般情况要复杂得多,特别是需要检测和处理段落中可能出现的各种链接项目;图片、超链接或图表等。

但是,如果您确定这些都不存在,那么这几行应该可以完成工作。


推荐阅读