separado reconoce problemas problema por organizar leer formato delimitados configuracion como comas archivos archivo abrir csv

reconoce - ¿Hay alguna forma de incluir comas en columnas CSV sin romper el formato?



problema al abrir archivos csv (9)

Además de los puntos en otras respuestas: una cosa a tener en cuenta si está utilizando citas en Excel es la ubicación de sus espacios. Si tiene una línea de código como esta:

print ''%s, "%s", "%s", "%s"'' % (value_1, value_2, value_3, value_4)

Excel tratará la cita inicial como una cita literal en lugar de usarla para escapar de las comas. Tu código tendrá que cambiar a

print ''%s,"%s","%s","%s"'' % (value_1, value_2, value_3, value_4)

Fue esta sutileza lo que me trajo aquí.

Tengo un CSV de dos columnas con un nombre y un número. El nombre de algunas personas usa comas, por ejemplo, Joe Blow, CFA. Esta coma rompe el formato CSV, ya que se interpreta como una nueva columna.

He leído y la receta más común parece estar reemplazando ese carácter, o reemplazando el delimitador, con un nuevo valor (por ejemplo, this|that|the, other ).

Realmente me gustaría mantener el separador de coma (sé que Excel admite otros delimitadores, pero otros intérpretes pueden no). También me gustaría mantener la coma en el nombre, como Joe Blow| CFA Joe Blow| CFA parece bastante tonto.

¿Hay alguna forma de incluir comas en columnas CSV sin romper el formato, por ejemplo escapándolos?


Debe citar esos valores.
Here hay una especificación más detallada.


Dependiendo de su idioma, puede haber un método to_json disponible. Eso escapará a muchas cosas que rompen los CSV.


El problema con el formato CSV, es que no hay una sola especificación, hay varios métodos aceptados, sin forma de distinguir cuál debe usarse (para generar / interpretar). Discutí todos los métodos para escapar de los personajes (nuevas líneas en ese caso, pero la misma premisa básica) en otra publicación . Básicamente se trata de usar un proceso de generación / escape CSV para los usuarios previstos, y esperar que al resto no le importe.

Documento de especificación de referencia .


Encierre el campo entre comillas, por ejemplo

field1_value,field2_value,"field 3,value",field4, etc...

Ver wikipedia .

Actualizado :

Para codificar una cita, use " , un símbolo de una sola cotización en un campo se codificará como "" , y todo el campo se convertirá en """" . Por lo tanto, si ve lo siguiente en, por ejemplo, Excel:

--------------------------------------- | regular_value |,,,"| ,"", |""" |"| ---------------------------------------

el archivo CSV contendrá:

regular_value,",,,""",","""",","""""""",""""

Una coma simplemente se encapsula usando comillas, por lo tanto , convierte en "," .

Una coma y una cita deben ser encapsuladas y citadas, por lo que "," convierte en """,""" .


Enfrenté el mismo problema y citar el , no ayudó. Eventualmente, reemplacé el , con + , terminé el proceso, guardé el resultado en un archivo de salida y reemplacé el + con,. Esto puede parecer feo pero funcionó para mí.


Primero, si el valor del elemento tiene el carácter de comillas dobles ("), reemplace con el carácter de comillas dobles (" ")

item = item.ToString().Replace("""", """""")

Finalmente, ajuste el valor del elemento:

A LA IZQUIERDA: con el carácter de comillas dobles (")

A LA DERECHA: con el carácter de comillas dobles (") y el carácter de coma (,)

csv += """" & item.ToString() & ""","


Puede usar el campo Text_Qualifier en su administrador de conexión de archivos planos como " . Esto debería envolver sus datos entre comillas y solo separarlos con comas que están fuera de las comillas.


Si quiere hacer lo que dijo, puede usar comillas. Algo como esto

$name = "Joe Blow, CFA."; $arr[] = "/"".$name."/"";

así que ahora, puedes usar la coma en tu variable de nombre.