【问题标题】:How can I use Python to delete certain paragraphs in docx document?如何使用 Python 删除 docx 文档中的某些段落?
【发布时间】:2020-04-21 04:31:40
【问题描述】:

我有一个很大的 .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") 

【问题讨论】:

    标签: python docx python-docx


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 您应该引用您复制此内容的位置,作为对原作者作品的认可。
    • 如何修改此代码以实现我的目标?你有完整的例子吗?
    • 因为没有人这样做,这里我链接了这个信息似乎来自的原始位置:github.com/python-openxml/python-docx/issues/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 2020-01-18
    相关资源
    最近更新 更多