Python-docx: удалить раздел библиографии (w:sdt)Python

Программы на Python
Anonymous
Python-docx: удалить раздел библиографии (w:sdt)

Сообщение Anonymous »

Моя конечная цель — найти и удалить любой раздел библиографии из документа Microsoft Word.
Как упоминалось в этом выпуске.
В настоящее время поддержка API отсутствует. для тегов w:sdt (которые, я думаю, предназначены только для библиографий). Однако в ответ на эту проблему было предложено обходное решение:

Код: Выделить всё

paragraph = ... # however you get the paragraph, maybe with `for paragraph in document.paragraphs`
p = paragraph._element
sdts = p.xpath('w:sdt')
for sdt in sdts:
parent = sdt.getparent()
parent.remove(sdt)
При использовании вышеизложенного XML-файл документа обновляет и удаляет теги w:sdt так, как я этого хочу. Однако, когда я сохраняю новый документ, выходной файл .docx по-прежнему включает раздел библиографии.
Почему, несмотря на то, что XML-файл документа python-docx не включает w:sdt elements, это не отражается после сохранения и открытия документа в Microsoft Word. Я читал здесь, что отношения документов могут иметь какое-то отношение к этому, но, учитывая, что при открытии нового документа Word я не получаю ошибок, я не думаю, что это проблема. Есть идеи?
Вот предварительная обработка фрагмента XML:

Код: Выделить всё


Hey there 











 CITATION Fra69 \l 2057 








(Herbert, 1969)







Вот постобработка фрагмента XML, где вы можете видеть, что библиография была удалена, но эти изменения не видны, когда я сохраняю и открываю документ:

Код: Выделить всё


Hey there 


Примечание. Я задаю этот вопрос здесь, поскольку в последнее время на GitHub python-docx не наблюдается особой активности.


Подробнее здесь: https://stackoverflow.com/questions/782 ... dt-section

Вернуться в «Python»