Как я могу использовать Python для удаления определенных параграфов в документе docx? - PullRequest
0 голосов
/ 21 апреля 2020

У меня большой документ .docx. Имеет более 100 абзацев. Тем не менее, есть некоторый tra sh абзац, который мне нужно удалить. Например, эти абзацы должны быть удалены с ключевым словом «Нет». Как я могу использовать python для удаления этих абзацев с ключевым словом «Нет». Это то, что я до сих пор, но он может удалить только пустой абзац. Как я могу изменить его для достижения моей цели?

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") 

1 Ответ

0 голосов
/ 21 апреля 2020

Вы можете сделать это для простого случая с этим кодом:

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

Любой последующий доступ к «удаленному» объекту абзаца вызовет AttributeError, поэтому вы должны быть осторожны, чтобы не сохранить ссылка висит, в том числе как элемент сохраненного значения Document.paragraphs.

Причина, по которой он еще не находится в библиотеке, заключается в том, что общий случай намного сложнее, в частности, необходимо обнаружить и обработать множество связанные элементы, которые могут присутствовать в абзаце; такие вещи, как изображение, гиперссылка или диаграмма и т. д. c.

Но если вы точно знаете, что ни один из них не присутствует, эти несколько строк должны выполнить работу.

...