python -docx стиль ошибки с «Список абзацев» - PullRequest
0 голосов
/ 12 марта 2020

Я использую python -docx для преобразования файлов Word docx в проприетарный формат XML.

У меня проблемы с пулями / нумерованными списками. В ряде документов Word, когда я открываю их с помощью python -docx и смотрю на стиль абзацев маркированных / перечисляемых списков, некоторые элементы в списке будут «Список абзацев», но многие из них будут «Нормальные». ».

Предполагая, что все они должны быть 'List Paragraph', есть ли способ проверить, является ли это проблемой с документом Word или с пакетом python -docx?

Кроме того, Есть ли способ идентифицировать эти маркеры / цифры, когда стиль абзаца не такой, каким он должен быть? Например. используя paragraph_format?

1 Ответ

0 голосов
/ 12 марта 2020

Точка с маркером может появляться в абзаце в Word как минимум двумя разными способами:

  1. Пользователь применяет стиль абзаца , например «Список абзацев»
  2. Пользователь применяет маркер непосредственно к абзацу, возможно, используя кнопку маркера на панели инструментов.

Я подозреваю, что пользователи склонны впадать в одну из этих двух привычек. Последовательное использование стилей позволяет настроить форматирование всех этих абзацев, просто изменив стиль. Но я подозреваю, что 98% + пользователей культивируют привычку «нажимать на кнопку маркера».

В любом случае, неудивительно, что в таком случае можно найти смешанный пакет документов.

К сожалению, python-docx в настоящее время не поддерживает непосредственно применяемые пули, ни для применения, ни для обнаружения.

Если у вас есть навыки, чтобы проверить XML параграфа (print(paragraph._p.xml) - начало ), тогда вы, вероятно, можете использовать выражение XPath в paragraph._p (элемент XML, лежащий в основе абзаца), чтобы определить, имеет ли он элемент, который, как я считаю, является <w:bu>, что указывает на наличие непосредственно примененного маркера. Проверка XML параграфа, о котором известно, что он имеет непосредственно примененную пулю, должна дать вам подробную информацию о том, что вы будете искать там.

...