Utilisez le module Python docx natif . Voici comment extraire tout le texte d'un document :
document = docx.Document(filename)
docText = '\n\n'.join(
paragraph.text for paragraph in document.paragraphs
)
print(docText)
Voir le site Python DocX
Découvrez également Textract qui extrait les tableaux, etc.
L'analyse XML avec des regex invoque cthulu. Ne le faites pas !
La réponse de benjamin est plutôt bonne. Je viens de consolider...
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)
Vous pouvez faire un appel de sous-processus à antiword. Antiword est un utilitaire de ligne de commande Linux pour vider le texte d'un document Word. Fonctionne plutôt bien pour les documents simples (évidemment, il perd le formatage). Il est disponible via apt, et probablement en tant que RPM, ou vous pouvez le compiler vous-même.