32 votos

¿Por qué es una coma mal separador de registro/delimitador?

Estaba leyendo este artículo y tengo curiosidad por la respuesta apropiada a esta pregunta.

La única cosa que viene a mi mente es, quizás, que en algunos países el separador decimal es una coma, y puede haber problemas a la hora de compartir datos en CSV, pero no estoy muy seguro de mi respuesta.

33voto

Dipstick Puntos 4869

Formato CSV especificación se define en RFC 4180. Esta especificación fue publicada porque

no hay ninguna especificación formal de existencia, que permite una amplia variedad de interpretaciones de archivos CSV

Por desgracia, desde el año 2005 (fecha de la publicación de la RFC), nada ha cambiado. Todavía tenemos una amplia variedad de implementaciones. El enfoque general que se define en el RFC 4180 es encerrar los campos que contengan caracteres tales como comas, comillas, esta recomendación, sin embargo, no siempre se encuentran por diferentes software.

El problema es que en varios lugares Europeos carácter de coma sirve como el punto decimal, por lo que usted escribe 0,005 en lugar de 0.005. Sin embargo, en otros casos, las comas se usan en lugar de espacios para la señal de grupos de dígitos, por ejemplo 4,000,000.00 (ver aquí). En ambos casos, el uso de comas posiblemente conducir a errores en la lectura de datos desde archivos csv debido a que su software no saber realmente si 0,005, 0,1 son dos números o cuatro números diferentes (ver ejemplo aquí).

Por último, pero no menos importante, si usted almacenar texto en el archivo de datos, a continuación, las comas son mucho más comunes en el texto de, por ejemplo, el punto y coma, por lo que si el texto no está entre comillas, que estos datos también se pueden leer fácilmente con errores.

Nada hace que comas mejor, o peor separadores de campo tan lejos como archivos CSV se utilizan de conformidad con las recomendaciones como RFC 4180 que la guardia de los problemas descritos anteriormente. Sin embargo, si hay un riesgo de que el uso de la simplificación del formato CSV, que no incluye los campos en comillas, o la recomendación podría ser utilizado de forma incoherente, a continuación, otros separadores (por ejemplo, punto y coma) parecen ser más seguro enfoque.

17voto

jdotjdot Puntos 129

Técnicamente coma es tan buena como la de cualquier otro carácter que se utiliza como separador. El nombre del formato se refiere directamente de que los valores están separados por comas (Comma-Separated values).

La descripción de formato CSV es el uso de la coma como separador.

Cualquier campo que contiene la coma debe ser el doble de comillas. Por lo que no causa un problema para la lectura de datos. Véase el punto 6 de la descripción:

  1. Los campos que contiene saltos de línea (CRLF), comillas dobles, y comas debe estar encerrado entre comillas dobles.

Por ejemplo, las funciones read.csv y write.csv de R por defecto son el uso de la coma como separador.

11voto

rightstuff Puntos 482

Además de ser un separador de dígitos en números, es también formas parte de la dirección (tales como la dirección del cliente, etc) en muchos países. Mientras que algunos países han corto bien definir direcciones, muchos otros tienen, a largo sinuoso direcciones, incluyendo, a veces dos comas en la misma línea. Bueno archivos CSV adjuntar todos los datos en comillas dobles. Pero demasiado simplista, mal escrito analizadores no proporcionan para la lectura y la diferenciación de tales. (Luego, está el problema de la utilización de las comillas dobles como parte de los datos, tales como la cita de un poema).

9voto

oddfellow Puntos 1091

Mientras @Tim s respuesta es correcta - me gustaría agregar que "csv" como un todo no tiene ningún estándar común - especialmente la de escapar de las reglas no están definidos del todo, que conduce a "formatos" que son legibles en un programa, pero no en otro. Este es excarberated por el hecho de que cada "programador" bajo el sol sólo piensa "oh csv - voy a construir mi propio parser!" y, a continuación, pierde todos los casos de borde.

Por otra parte, csv totalmente carece de la capacidad para almacenar los metadatos, o incluso el tipo de datos de una columna líder en varios de los documentos que usted debe leer a unterstand los datos.

4voto

Joe S Puntos 300

Si usted puede abandonar el delimitador de coma y el uso de una ficha de personaje que tendrá mucho más éxito. Usted puede dejar el archivo con el nombre .CSV e importar en la mayoría de los programas no suele ser un problema. Sólo tiene que especificar delimitado por tabuladores en lugar de coma al importar el archivo. Si hay comas en sus datos usted tiene un problema cuando se especifica delimitado por comas como usted bien sabe.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X