Utilice el módulo docx nativo de Python . Aquí se explica cómo extraer todo el texto de un documento:
document = docx.Document(filename)
docText = '\n\n'.join(
paragraph.text for paragraph in document.paragraphs
)
print(docText)
Ver el sitio Python DocX
Consulte también Textract, que extrae tablas, etc.
El análisis de XML con expresiones regulares invoca a cthulu. ¡No lo hagas!
La respuesta de benjamin es bastante buena. Acabo de consolidar...
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)
Podría hacer una llamada de subproceso a antiword. Antiword es una utilidad de línea de comandos de Linux para descargar texto de un documento de Word. Funciona bastante bien para documentos simples (obviamente pierde formato). Está disponible a través de apt, y probablemente como RPM, o puede compilarlo usted mismo.