Чтение файлов.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 структура документа, который я анализирую, и все элементы формата абсолютно понятны и, следовательно, с ними легко работать.