Al intentar averiguar cómo hacer que los CSV se abran correctamente en Excel en una PC española (perteneciente a un cliente) encontré muchas respuestas que recomiendan usar sep=,
en la parte superior del archivo:
- La forma más fácil de abrir CSV con comas en Excel
- Cómo controlar la importación de CSV en Excel 2010
- Cómo abrir archivos CSV delimitados por punto y coma en la versión estadounidense de Excel
- Espacio o pestañas como separador en CSV
- ¿Cómo hacer que Excel interprete la coma como un delimitador predeterminado en los archivos CSV?
En vista de ello, este enfoque funciona, pero ninguna de esas respuestas dar ninguna otra información sobre donde esta opción viene de metadatos. He intentado buscar lo que significa (y, por lo tanto, he encontrado todas esas respuestas), pero no he podido obtener más información, especialmente dado que la puntuación es notoriamente difícil de buscar.
Mi principal preocupación es si esta es o no una característica específica de Excel . Sospecho que lo es, pero no he encontrado nada definitivo para confirmarlo.
Algunas preguntas relacionadas son:
- ¿Qué caracteres se pueden usar en esta configuración?
- Qué otras configuraciones están disponibles (por ejemplo, carácter de terminación de línea, carácter de comillas, etc.).
- ¿Hay otras herramientas que admitan oficialmente esta función?
Espero que haya algún documento en algún lugar al que alguien pueda señalarme que responda a todas estas preguntas y más; Simplemente no he podido encontrarlo.
Alguna aclaración:
El sep=
no es un parámetro para un analizador. Está destinado a colocarse dentro del CSV. Ejemplo:
sep=|
"LETTER"|"ANIMAL"
"a"|"aardvark"
"b"|"bear"
"c"|"cow"
fuente
Respuestas:
RFC 4180 es comúnmente reconocido como el estándar para el formato CSV, y no menciona ninguna de esas características.
El modelo W3C para datos tabulados y metadatos en la web lo menciona como una característica que no está dentro de su alcance:
Entonces, aunque no encontré ninguna prueba directa de que esta característica sea específica de Excel, aparentemente este sigue siendo el caso, ya que parece que no hay ningún documento de estandarización que cubra esa característica.
fuente
Para contribuir a una respuesta a una de sus preguntas: "¿Existen otras herramientas que admitan oficialmente esta función?"
Apple Numbers no admite esto (lo he probado con Numbers versión 3.6.2).
Tampoco es compatible con csv2json ( https://www.npmjs.com/package/csv2json ) ni csvtojson ( https://www.npmjs.com/package/csvtojson ).
fuente
La instrucción sep = se usa en todos los países donde la coma se usa como delimitador decimal, como Italia. Dado que Excel exporta CSV con punto y coma en lugar de comas en esos países, si desea asegurarse de que el archivo se pueda leer en EE. UU. U otros países, NECESITA
sep =;
encima del archivo Esto es específico de Excel y otras aplicaciones podrían ignorarlo.
fuente
Casi cualquier herramienta que pueda importar archivos .csv reconoce que la coma no es el único separador posible, por ejemplo, las pestañas han sido comunes durante mucho tiempo. Creo que esto se remonta a los días de las tarjetas perforadas, incluso, que debe haber algún carácter que se reconozca como el final del campo de datos, con la excepción de los sistemas que usan campos de ancho fijo o campos prefijados de longitud, casi todos los sistemas lo necesitan. desde el advenimiento de las computadoras.
Los 3 elementos esenciales son un separador de campo, un separador de registro y un marcador de final de datos, csv usa de forma predeterminada coma, nueva línea y final de archivo para estos, respectivamente, pero se puede usar casi cualquier entrada válida, sin embargo, necesita un mecanismo para escapar de los marcadores especiales si se producen dentro de sus datos válidos.
Un sistema histórico que encontré utilizaba nueva línea para el final del campo, 2 líneas en blanco para el final del registro y
*!*!* END *!*!*
para el final de los datos. Comúnmente me he encontrado con todos los,\t|:
utilizados como un separador de campo junto con varios caracteres de control.Una cosa a tener en cuenta es que los franceses y otros usan comas como punto decimal, esto puede causar todo tipo de diversión y juegos. Existe un grado de estandarización para los archivos csv en rfc4180, pero hay momentos en los que necesita editar manualmente los archivos al exportar desde un programa e importar a otro.
Para responder a la segunda parte de su pregunta, Python, por ejemplo, incluye un lector / escritor csv como una de las bibliotecas estándar que ofrece las siguientes opciones:
delimiter
- Este es el separador de campo (a menos que se haya escapado).doublequote
- Si es verdadero, un"
dentro de un campo se representará como""
escapechar
- elimina cualquier significado especial de cualquier carácter siguiente, por ejemplo, si está configurado como,\
entonces la cita se puede representar como\"
lineterminator
- por lo general uno de\n
,\r
,\r\n
o\n\r
quotechar
- carácter utilizado para citar cadenas, generalmente"
o'
quoting
- Marcar como uno de:ALL
- Cada campo está entre comillas, es decir:"1","Free Beer","ASAP"
MINIMAL
- Solo cite campos que tengan caracteres especiales, es decir:1,"Beer, (Free)", Now, Please
QUOTE_NONNUMERIC
- Cita cualquier cosa que no sea un número, es decir:1,"Beer, (Free)", "Now", "Please"
NONE
- No cite escape en su lugar, es decir:1,Beer\, (Free), Now, Please
skipinitialspace
- omita cualquier espacio inicial de cada campo para poder usarlo en,
lugar de solo,
como un separador de campo.En general, cuanto más flexible y bien pensada sea una herramienta que pueda importar archivos csv, más opciones tendrá (posiblemente con diferentes nombres y / o mecanismos).
fuente
sep=
no es un parámetro para un analizador sintáctico. He agregado algunas aclaraciones a mi pregunta.sep=
es y de dónde viene.