Usa il modulo Python docx nativo . Ecco come estrarre tutto il testo da un documento:
document = docx.Document(filename)
docText = '\n\n'.join(
paragraph.text for paragraph in document.paragraphs
)
print(docText)
Vedi il sito Python DocX
Controlla anche Textract che estrae tabelle ecc.
L'analisi di XML con espressioni regolari richiama cthulu. Non farlo!
la risposta di Benjamin è piuttosto buona. Ho appena consolidato...
import zipfile, re
docx = zipfile.ZipFile('/path/to/file/mydocument.docx')
content = docx.read('word/document.xml').decode('utf-8')
cleaned = re.sub('<(.|\n)*?>','',content)
print(cleaned)
Potresti effettuare una chiamata di sottoprocesso a antiword. Antiword è un'utilità della riga di comando di Linux per scaricare il testo da un documento word. Funziona abbastanza bene per documenti semplici (ovviamente perde la formattazione). È disponibile tramite apt, e probabilmente come RPM, oppure potresti compilarlo tu stesso.