Чтение файлов.docx в Python для поиска зачеркивания, маркеров и других форматов.

Может ли кто-нибудь помочь мне определить, в Python, используя python-docx, если абзац в файле.docx содержит текст, отформатированный с помощью зачеркивания (то есть, он появляется, но вычеркнут) или имеет начальную точку в начале? Я пытаюсь написать сценарий для определения структуры документа и анализа содержимого.

До сих пор я мог читать файл.docx и перебирать абзацы, выделяя полужирные абзацы.

from docx import Document
document = Document(r'C:\stuff\Document.docx')
for p in document.paragraphs:
    print p.text
    for run in p.runs:
        if run.bold:
            print 'BOLD ' + run.text

Остальное ускользает от меня на данный момент.

3 ответа

Для зачеркивания вы можете просто изменить свой пример так:

from docx import Document
document = Document(r'C:\stuff\Document.docx')
for p in document.paragraphs:
    for run in p.runs:
        if run.font.strike:
            print "STRIKE: " + run.text

См. Документацию по API для объекта Font для более интересных вещей, которые вы можете проверить.

Использование собственного анализатора Word DocX вместо преобразования его в HTML и использование анализатора HTML для документов Python DocX:

from docx.enum.style import WD_STYLE_TYPE
styles = document.styles
paragraph_styles = [
    s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH
]
for style in paragraph_styles:
    if style.name = 'List Bullet':
        print "I'm a bullet"

Исходя из предложения mkrieger1, я бы предложил использовать Pandoc для конвертации.docx в.html и проанализировать документ оттуда.

Установка Pandoc - это то же самое, что и установка python-docx, и преобразование из.docx в.html с помощью Pandoc работало как чудо. В.html структура документа, который я анализирую, и все элементы формата абсолютно понятны и, следовательно, с ними легко работать.

Другие вопросы по тегам