Я думаю, что название в значительной степени говорит само за себя. Следующий фрагмент кода пропускает нумерацию в случаях, когда абзац имеет тип «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.
Однако я обнаружил, что это не сработает при извлечении правильной нумерации, если автор настроил свой список для начала, например, с десятичного числа, которое не является просто следующим целым числом.
Есть ли правильное и более надежное решение?
Большое спасибо за вашу помощь - это на некоторое время сломало мой мозг.