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.

Los delimitadores en csv.writer añaden comillas adicionales.

Tengo un problema al intentar exportar mis datos a un archivo de Excel a través del escritor de CSV.

Cuando intento exportarlo con el delimitador predeterminado (la coma), lo hace correctamente. Este es el código con el delimitador predeterminado:

with open(file, 'w', encoding="utf-8", newline='') as csvfile:
    writer = csv.writer(csvfile, dialect='excel',quoting=csv.QUOTE_NONNUMERIC)

Salida:

"ID","Title","Genre","Country"
"A4321","Film1","Horror","USA"
"A4322","Film2","Romance","France"
"A4323","Film3","Comedy","Germany"
"A4324","Film4","Western","UK"

Y cuando transformo el texto en columnas en Excel con el separador de coma, lo separa correctamente en columnas.

Sin embargo, si intento usar la barra vertical (|) como delimitador, la salida es bastante extraña, ya que crea más comillas en el archivo. Este es el código, en el que solo agrego la especificación del delimitador:

with open(m_file, 'w', encoding="utf-8", newline='') as csvfile:
    writer = csv.writer(csvfile, dialect='excel', delimiter ='|', quoting=csv.QUOTE_NONNUMERIC)

Salida:

"ID"|"Title"|"Genre"|"Country"
"A4321|"Film1"|"Horror"|"USA"
"A4322|"Film2"|"Romance"|"France"
"A4323|"Film3"|"Comedy"|"Germany"
"A4324|"Film4"|"Western"|"UK"

Y la separación con el delimitador de barra vertical no funciona en Excel.

He intentado cambiar la opción de “quoting”, agregar “escapechars” y “doublequotes = False”, pero no funciona.

¿Debo cambiar algo más?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema no está en el código en sí, sino en cómo Excel maneja el delimitador de barra vertical. Excel puede que no reconozca la barra vertical como un delimitador por defecto y, por lo tanto, no separa correctamente las columnas.

    Una posible solución es especificar manualmente la barra vertical como delimitador al importar el archivo CSV en Excel. Esto se puede hacer seleccionando la opción “Delimitado” cuando se solicite cómo importar el archivo, y luego seleccionando la opción “Otro” e ingresando el carácter de barra vertical.

    Otra solución es utilizar un delimitador diferente que sea reconocido por Excel, como el carácter de tabulación (\t). Esto se puede lograr cambiando el parámetro del delimitador en la función csv.writer() a “\t”. Sin embargo, esto puede no ser ideal dependiendo de la estructura de los datos, ya que los caracteres de tabulación pueden estar presentes en los datos mismos.

    En general, es importante considerar cómo se utilizarán y manipularán los datos en diferentes programas al seleccionar un delimitador para los archivos CSV.

Comments are closed.