Почему python-docx читает только первый абзац docx?

#python #xml #text-parsing #python-docx

#python #xml #синтаксический анализ текста #python-docx

Вопрос:

Добрый день!

В настоящее время я пытаюсь прочитать текст из файла docx с помощью python-docx. xml проблемной части выглядит следующим образом:

<w:t xml:space=»сохранить»>Некоторый текст
<w:br />
больше текста

<w:br />в: <w:br />
немного больше текста
</w:t>

Поэтому при чтении его с помощью python-docx он просто не видит частей «больше текста» и «немного больше текста«. Я предполагаю, что это происходит потому, что каждая строка не оформлена с помощью <w:t> и </w: t>, но весь прогон также включает в себя разрывы строк.
Итак, я пишу код:

 doc = docx.Document('File.docx')
for para in doc.paragraphs:
    print(para.text)
  

Вывод:

Некоторый текст

Требуемый результат:

Немного текста
больше текста
немного больше текста

Кто-нибудь знает, как заставить это работать, используя python-docx или какую-либо другую библиотеку на python?
Спасибо.

Комментарии:

1. Каково происхождение проблемного файла .docx? Он сгенерирован каким-либо другим программным обеспечением или сделан вручную с использованием LibreOffice или Word или, возможно, GoogleDocs?

2. Дорогой @Arty Antonov, я создал образец файла docx, подобного этому, используя Word 2007 и Google Docs, и оба они — используя ваш код — успешно прочитали его. Не могли бы вы указать, как к проблемному файлу?

3. Привет @scanny, This .docx генерируется автоматически с помощью какого-то неизвестного мне программного обеспечения. При попытке отредактировать этот документ вручную с помощью Word 2007 вся XML-структура document.xml изменяется, и проблемная часть обычно оформляется с помощью <w:t> и </w: t>, поэтому python-docx может прочитать все это.

4. Привет @AvivYaniv, при попытке удалить конфиденциальную информацию из файла .docx вручную проблемная часть .xml исчезает. В любом случае, спасибо за ваше время.