template read libreria leer font example python python-2.7 python-3.x python-docx

libreria - read docx python



Cómo extraer texto de un archivo docx existente usando python-docx (6)

Estoy tratando de usar el módulo python-docx ( pip install python-docx ) pero parece ser muy confuso ya que en github repo test sample están usando la función opendocx pero en readthedocs están usando Document clase Document . ¿Incluso solo muestran cómo agregar texto a un archivo docx que no lee el existente?

El primero ( opendocx ) no funciona, puede estar en desuso. Para el segundo caso que estaba tratando de usar:

from docx import Document document = Document(''test_doc.docx'') print document.paragraphs

Devolvió una lista del <docx.text.Paragraph object at 0x... >

Entonces lo hice:

for p in document.paragraphs: print p.text

Devolvió todo el texto pero faltaron algunas cosas. Todas las URL (CTRL + CLIC para ir a URL) no estaban presentes en el texto de la consola.

¿Cual es el problema? ¿Por qué faltan las URL?

¿Cómo podría obtener el texto completo sin iterar sobre el bucle (algo así como open().read() )


Hay dos "generaciones" de python-docx. La generación inicial finalizó con las versiones 0.2.x y la generación "nueva" iniciada en v0.3.0. La nueva generación es una reescritura básica orientada a objetos de la versión heredada. Tiene un repositorio distinto ubicado aquí .

La función opendocx () es parte de la API heredada. La documentación es para la nueva versión. La versión heredada no tiene documentación para hablar.

Ni los hipervínculos de lectura ni escritura son compatibles con la versión actual. Esa capacidad está en la hoja de ruta, y el proyecto está en desarrollo activo. Resulta ser una API bastante amplia porque Word tiene tanta funcionalidad. Así que lo haremos, pero probablemente no en el próximo mes a menos que alguien decida enfocarse en ese aspecto y contribuir con él.


Puede usar python-docx2txt, que está adaptado de python-docx, pero también puede extraer texto de enlaces, encabezados y pies de página. También puede extraer imágenes.


Tuve un problema similar, así que encontré una solución alternativa (eliminar las etiquetas de hipervínculo gracias a las expresiones regulares para que solo quede una etiqueta de párrafo). Publiqué esta solución en https://github.com/python-openxml/python-docx/issues/85 BP


puedes intentar esto

import docx def getText(filename): doc = docx.Document(filename) fullText = [] for para in doc.paragraphs: fullText.append(para.text) return ''/n''.join(fullText)


puedes probar esto también

from docx import Document document = Document(''demo.docx'') for para in document.paragraphs: print(para.text)


Sin instalar python-docx

docx es básicamente un archivo zip con varias carpetas y archivos dentro de él. En el siguiente enlace, puede encontrar una función simple para extraer el texto del archivo docx , sin necesidad de instalar python-docx y lxml que a veces crean un problema:

http://etienned.github.io/posts/extract-text-from-word-docx-simply/