es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python divide archivos de texto por párrafo y los guarda en un archivo CSV.

Tengo varios archivos de texto que me gustaría dividir por párrafos y transponer a un archivo CSV. Cada párrafo en mis archivos de texto está separado por una línea en blanco, y algunos párrafos largos tienen varias líneas. Aquí tienes un ejemplo de un archivo de texto:

“Hola mundo!

Blabla

(línea en blanco)

Este es el segundo párrafo.
Aquí hay más texto

y este es un párrafo muy largo.”

Y me gustaría obtener el siguiente archivo CSV:

filename texto
1.txt Hola mundo! Blabla
1.txt Este es el segundo párrafo. Aquí hay más texto y este es un párrafo muy largo.

Este es el código que tengo hasta ahora, pero solo me proporciona una fila: “1.txt, [“Hola mundo!”, “Este es el segundo párrafo. Aquí hay más texto. y este es un párrafo muy largo”]”:

import os, csv
os.chdir('ruta donde tengo los archivos de texto')
from pathlib import Path
with open('output.csv', 'w', newline='', encoding="utf-16") as archivo_salida:
    csv_salida = csv.writer(archivo_salida)
    csv_salida.writerow(['nombre_archivo', 'Contenido'])
    for nombreArchivo in Path('.').glob('*.txt'):
        csv_salida.writerow([str(nombreArchivo),open(str(nombreArchivo.absolute())).read().strip().split("\n\n")])
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para dividir un archivo de texto por párrafos y transponerlo en un archivo CSV, puedes usar las funciones incorporadas de Python como split y csv.

    La función split se utiliza para dividir el archivo de texto en párrafos basados en una línea vacía. Puedes dividir el archivo de texto en párrafos llamando al método split con \n\n como argumento.

    text = open('ejemplo.txt', 'r').read()
    paragraphs = text.split('\n\n')
    

    El módulo csv se puede utilizar para escribir los párrafos en un archivo CSV. Puedes crear un archivo CSV y escribir la fila de encabezado utilizando la función csv.writer. Luego, puedes recorrer los párrafos para escribir cada párrafo como una fila con su nombre de archivo.

    import csv
    import os
    
    # Cambia al directorio donde se encuentran los archivos de texto
    os.chdir('/ruta/hacia/los/archivos/de/texto')
    
    # Crea un archivo CSV y escribe la fila de encabezado
    with open('salida.csv', 'w', newline='', encoding='utf-8') as archivo_salida:
        escritor_csv = csv.writer(archivo_salida)
        escritor_csv.writerow(['nombre_archivo', 'texto'])
    
        # Recorre los archivos de texto
        for nombre_archivo in os.listdir():
            # Verifica si el archivo es un archivo de texto
            if nombre_archivo.endswith('.txt'):
                # Lee el archivo de texto
                texto = open(nombre_archivo, 'r').read()
    
                # Divide el texto en párrafos
                parrafos = texto.split('\n\n')
    
                # Escribe cada párrafo como una fila con su nombre de archivo
                for parrafo in parrafos:
                    escritor_csv.writerow([nombre_archivo, parrafo])
    

    Ten en cuenta que en el código anterior, debes reemplazar /ruta/hacia/los/archivos/de/texto con la ruta real donde se encuentren tus archivos de texto. Una vez que ejecutes este código, debería crear un archivo CSV llamado salida.csv con el nombre de archivo y el texto de cada párrafo.

Comments are closed.