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.

Cómo puedo dividir un archivo CSV con Saltos de línea (/n) si los campos contienen cadenas con Saltos de línea (/n) en su interior?

Tengo problemas para dividir un archivo CSV porque algunos de los campos tienen un “\n” dentro de ellos.
Estoy utilizando:

file_data = csv_file.read().decode("utf-8")
csv_data = file_data.split("\n")

pero los campos se ven así:

'string 1','string 2',
'string
 3'
'string 4',

Me gustaría que csv_data[0] sea “strings 1 y 2”, csv_data[1] sea “string 3” y csv_data[2] sea “string 4”.
De la forma en la que lo estoy haciendo actualmente, obtengo csv_data[0] correctamente, pero el string 3 está dividido en dos índices debido a que tiene un /n dentro de su texto…
—————[edición]—————
Lo solucioné no utilizando split, sino iterando a través de csv_data (respuesta publicada abajo).

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Si tienes problemas para separar un archivo CSV porque algunos de los campos tienen un “\n” en su interior, puedes iterar a través de los datos del CSV en lugar de usar el método split(). Aquí tienes un ejemplo de fragmento de código:

    file_data = csv_file.read().decode("utf-8")
    csv_data = file_data.split("\n")
    
    for i, line in enumerate(csv_data):
        # Comprueba si la línea termina con una coma
        if line.endswith(","):
            # Si lo hace, concatenarla con la línea siguiente
            line += csv_data[i+1]
            # Elimina la línea siguiente de la lista
            del csv_data[i+1]
        # Separa la línea en campos separados
        fields = line.split(",")
        # Haz algo con los campos, por ejemplo:
        print(fields)
    

    Este código iterará a través de los datos del CSV línea por línea, comprobando si cada línea termina con una coma. Si lo hace, concatenará esa línea con la siguiente y eliminará la siguiente línea de la lista. Esto asegurará que cualquier campo con “\n” en su interior se trate como un único campo. Finalmente, separará cada línea en campos separados y hará algo con ellos (en este ejemplo de código, simplemente imprime los campos).

Comments are closed.