Lectura y escritura de archivos de MS Word en Python a trav茅s del m贸dulo Python-Docx

    La utilidad MS Word de la suite Microsoft Office es una de las herramientas m谩s utilizadas para escribir documentos de texto, tanto simples como complejos. Aunque los humanos pueden leer y escribir f谩cilmente documentos de MS Word, suponiendo que tenga instalado el software de Office, muchas veces necesita leer texto de documentos de Word dentro de otra aplicaci贸n.

    Por ejemplo, si est谩 desarrollando una aplicaci贸n de procesamiento de lenguaje natural en Python que toma archivos de MS Word como entrada, deber谩 leer los archivos de MS Word en Python antes de poder procesar el texto. De manera similar, a menudo es necesario escribir texto en documentos de MS Word como salida, que podr铆a ser un informe generado din谩micamente para descargar, por ejemplo.

    En este art铆culo, ver谩 c贸mo leer y escribir archivos de MS Word en Python.

    Instalaci贸n de la biblioteca Python-Docx

    Existen varias bibliotecas que se pueden usar para leer y escribir archivos de MS Word en Python. Sin embargo, usaremos el python-docx m贸dulo debido a su facilidad de uso. Ejecute lo siguiente pip comando en su terminal para descargar el python-docx m贸dulo como se muestra a continuaci贸n:

    $ pip install python-docx
    

    Lectura de archivos de MS Word con el m贸dulo Python-Docx

    En esta secci贸n, ver谩 c贸mo leer texto de archivos de MS Word a trav茅s del python-docx m贸dulo.

    Cree un nuevo archivo de MS Word y c谩mbiele el nombre a “my_word_file.docx”. Guard茅 el archivo en la ra铆z de mi directorio “E”, aunque puede guardar el archivo en cualquier lugar que desee. El archivo my_word_file.docx debe tener el siguiente contenido:

    Para leer el archivo anterior, primero importe el docx m贸dulo y luego crear un objeto del Document clase de la docx m贸dulo. Pase la ruta de my_word_file.docx al constructor del Document class, como se muestra en el siguiente script:

    import docx
    
    doc = docx.Document("E:/my_word_file.docx")
    

    los Document objeto de clase doc ahora se puede usar para leer el contenido de my_word_file.docx.

    Lectura de p谩rrafos

    Una vez que crea un objeto del Document clase usando la ruta del archivo, puede acceder a todos los p谩rrafos del documento a trav茅s de la paragraphs atributo. Una l铆nea vac铆a tambi茅n se lee como un p谩rrafo por el Document. Busquemos todos los p谩rrafos de my_word_file.docx y luego visualicemos el n煤mero total de p谩rrafos en el documento:

    all_paras = doc.paragraphs
    len(all_paras)
    

    Salida:

    10
    

    Ahora imprimiremos iterativamente todos los p谩rrafos en el archivo my_word_file.docx:

    for para in all_paras:
        print(para.text)
        print("-------")
    

    Salida:

    -------
    Introduction
    -------
    
    -------
    Welcome to Pharos.sh.com
    -------
    The best site for learning Python and Other Programming Languages
    -------
    Learn to program and write code in the most efficient manner
    -------
    
    -------
    Details
    -------
    
    -------
    This website contains useful programming articles for Java, Python, Spring etc.
    -------
    

    La salida muestra todos los p谩rrafos del archivo de Word.

    Incluso podemos acceder a un p谩rrafo espec铆fico indexando el paragraphs propiedad como una matriz. Imprimamos el quinto p谩rrafo en el archivo:

    single_para = doc.paragraphs[4]
    print(single_para.text)
    

    Salida:

    The best site for learning Python and Other Programming Languages
    

    Ejecuciones de lectura

    Una ejecuci贸n en un documento de Word es una secuencia continua de palabras que tienen propiedades similares, como tama帽os de fuente, formas de fuente y estilos de fuente similares. Por ejemplo, si observa la segunda l铆nea de my_word_file.docx, contiene el texto “Bienvenido a Pharos.sh.com”, aqu铆 el texto “Bienvenido a” est谩 en fuente simple, mientras que el texto “Pharos.sh.com” est谩 en cara atrevida. Por lo tanto, el texto “Bienvenido a” se considera como una ejecuci贸n, mientras que el texto en negrita “Pharos.sh.com” se considera como otra ejecuci贸n.

    De manera similar, “Aprenda a programar y escribir c贸digo de la manera m谩s eficiente” y “de la manera m谩s eficiente” se tratan como dos ejecuciones diferentes en el p谩rrafo “Aprenda a programar y escribir c贸digo de la manera m谩s eficiente”.

    Para obtener todas las corridas en un p谩rrafo, puede usar el run propiedad de la paragraph atributo del doc objeto.

    Leamos todas las corridas del p谩rrafo n煤mero 5 (4to 铆ndice) en nuestro texto:

    single_para = doc.paragraphs[4]
    for run in single_para.runs:
        print(run.text)
    

    Salida:

    The best site for
    learning Python
     and Other
    Programming Languages
    

    De la misma manera, el siguiente script imprime todas las ejecuciones del sexto p谩rrafo del archivo my_word_file.docx:

    second_para = doc.paragraphs[5]
    for run in second_para.runs:
        print(run.text)
    

    Salida:

    Learn to program and write code in the
    most efficient manner
    

    Escribir archivos de MS Word con el m贸dulo Python-Docx

    En la secci贸n anterior, vio c贸mo leer archivos de MS Word en Python usando el python-docx m贸dulo. En esta secci贸n, ver谩 c贸mo escribir archivos de MS Word a trav茅s del python-docx m贸dulo.

    Para escribir archivos de MS Word, debe crear un objeto del Document class con un constructor vac铆o, o sin pasar un nombre de archivo.

    mydoc = docx.Document()
    

    Redacci贸n de p谩rrafos

    Para escribir p谩rrafos, puede utilizar el add_paragraph() m茅todo del Document objeto de clase. Una vez que haya agregado un p谩rrafo, deber谩 llamar al save() m茅todo en el Document objeto de clase. La ruta del archivo en el que desea escribir su p谩rrafo se pasa como par谩metro a la save() m茅todo. Si el archivo a煤n no existe, se crear谩 un nuevo archivo; de lo contrario, el p谩rrafo se agregar谩 al final del archivo de MS Word existente.

    La siguiente secuencia de comandos escribe un p谩rrafo simple en un archivo de MS Word reci茅n creado llamado “my_written_file.docx”.

    mydoc.add_paragraph("This is first paragraph of a MS Word file.")
    mydoc.save("E:/my_written_file.docx")
    

    Una vez que ejecute el script anterior, deber铆a ver un nuevo archivo “my_written_file.docx” en el directorio que especific贸 en el save() m茅todo. Dentro del archivo, deber铆a ver un p谩rrafo que dice “Este es el primer p谩rrafo de un archivo de MS Word”.

    Agreguemos otro p谩rrafo a my_written_file.docx:

    mydoc.add_paragraph("This is the second paragraph of a MS Word file.")
    mydoc.save("E:/my_written_file.docx")
    

    Este segundo p谩rrafo se agregar谩 al final del contenido existente en my_written_file.docx.

    Ejecuciones de escritura

    Tambi茅n puede escribir ejecuciones usando el python-docx m贸dulo. Para escribir ejecuciones, primero debe crear un identificador para el p谩rrafo al que desea agregar su ejecuci贸n. Eche un vistazo al siguiente ejemplo para ver c贸mo se hace:

    third_para = mydoc.add_paragraph("This is the third paragraph.")
    third_para.add_run(" this is a section at the end of third paragraph")
    mydoc.save("E:/my_written_file.docx")
    

    En el gui贸n de arriba escribimos un p谩rrafo usando el add_paragraph() m茅todo del Document objeto de clase mydoc. los add_paragraph() El m茅todo devuelve un identificador para el p谩rrafo reci茅n agregado. Para agregar una ejecuci贸n al nuevo p谩rrafo, debe llamar al add_run() m茅todo en el identificador de p谩rrafo. El texto de la ejecuci贸n se pasa en forma de cadena al add_run() m茅todo. Finalmente, debe llamar al save() m茅todo para crear el archivo real.

    Escribir encabezados

    Tambi茅n puede agregar encabezados a archivos de MS Word. Para hacerlo, debe llamar al add_heading() m茅todo. El primer par谩metro del add_heading() El m茅todo es la cadena de texto para el encabezado y el segundo par谩metro es el tama帽o del encabezado. Los tama帽os de encabezado comienzan desde 0, siendo 0 el encabezado de nivel superior.

    El siguiente script agrega tres encabezados de nivel 0, 1 y 2 al archivo my_written_file.docx:

    mydoc.add_heading("This is level 1 heading", 0)
    mydoc.add_heading("This is level 2 heading", 1)
    mydoc.add_heading("This is level 3 heading", 2)
    mydoc.save("E:/my_written_file.docx")
    

    Agregar im谩genes

    Para agregar im谩genes a archivos de MS Word, puede usar el add_picture() m茅todo. La ruta a la imagen se pasa como par谩metro a la add_picture() m茅todo. Tambi茅n puede especificar el ancho y alto de la imagen usando el docx.shared.Inches() atributo. La siguiente secuencia de comandos agrega una imagen del sistema de archivos local al archivo de Word my_written_file.docx. El ancho y el alto de la imagen ser谩n de 5 y 7 pulgadas, respectivamente:

    mydoc.add_picture("E:/eiffel-tower.jpg", width=docx.shared.Inches(5), height=docx.shared.Inches(7))
    mydoc.save("E:/my_written_file.docx")
    

    Despu茅s de ejecutar todos los scripts en la secci贸n Escribir archivos de MS Word con el m贸dulo Python-Docx de este art铆culo, su archivo final my_written_file.docx deber铆a verse as铆:

    En el resultado, puede ver los tres p谩rrafos que agreg贸 al archivo de MS Word, junto con los tres encabezados y una imagen.

    Conclusi贸n

    El art铆culo brind贸 una breve descripci贸n de c贸mo leer y escribir archivos de MS Word usando el python-docx m贸dulo. El art铆culo cubre c贸mo leer p谩rrafos y se ejecuta desde un archivo de MS Word. Finalmente, en este art铆culo se ha explicado el proceso de escribir archivos de MS Word, agregar un p谩rrafo, ejecuciones, encabezados e im谩genes a archivos de MS Word.

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *