Получить нумерацию объекта абзаца со стилем «Список абзацев» - PullRequest
0 голосов
/ 08 марта 2019

Я думаю, что название в значительной степени говорит само за себя. Следующий фрагмент кода пропускает нумерацию в случаях, когда абзац имеет тип «ListParagraph»:

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

Чтобы вывести нумерацию, я понимаю, что нужно перейти к document.xml и сопоставить его с numbering.xml. Итак, используя python-docx, мы можем сказать, что

numId_val = para._element.pPr.numPr.numId.val

дает вам доступ к идентификатору стиля нумерации. Тогда звонок

para._element.pPr.numPr.ilvl.val

дает вам доступ к уровню нумерации, начиная с 0.

Тогда в принципе можно построить рекурсивный алгоритм для вывода нумерации на основе последовательности numId_vals и ilvls.

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

Есть ли правильное и более надежное решение?

Большое спасибо за вашу помощь - это на некоторое время сломало мой мозг.

...