Blog ElCodiguero
07 Jan 2010 Varios

CSV: simple y versátil

¿Qué es un archivo CSV?

CSV es un tipo de archivo de texto que contiene son archivos de valores separados por comas (de ahí su nombre). Es un formato bien simple y práctico. No tiene una documentación oficial, pero buscando en internet encontré el RFC 4180, Common Format and MIME Type for Comma-Separated Values (CSV) Files. Al contrario de muchos RFC, que son especificaciones completas de formatos y protocolos, este parece ser simplemente un resumen de las características de los CSV, y un intento por documentar formalmente el formato.

Hay 5 reglas básicas que definen un archivo CSV, a saber:

  1. Cada campo se separa con una coma, al último de la fila no le sigue una coma
  2. No se toman en cuenta posibles espacios entre las comas separadoras.
  3. Cada fila se separa con un salto de línea (CRLF, aunque se soporta también LF)
  4. Los campos pueden o no estar delimitados por comillas (necesario en particular cuando se necesita incluir una coma en el campo o un salto de línea).
  5. Si se necesita incluir comillas ", hay que duplicarlas: para que se tome "b" como el campo completo, hay que escribirlo como ""b""

Detalles

En caso de querer ponerlo para descargar, es bueno saber que el tipo MIME del formato es text/csv.

La codificación de caracteres por defecto se toma como US-ASCII, pero puede usarse el parámetro charset de la cabecera Content-Type para especificar otra. Si no se usa charset, el programa que trabaje con el archivo CSV deberá decidir qué codificación usa. Este es el caso más común, ya que cuando uno abre el archivo con un programa como Excel u OpenOffice Calc, no existe una cabecera que indique el tipo MIME.

PHP provee 2 funciones para el manejo de estos archivos: fputcsv y fgetcsv. fgetcsv extrae los campos separados por comas de un archivo, línea por línea, mientras que fputcsv permite hacer el proceso contrario.

Python incluye el módulo csv, que permite leer y escribir fácilmente tuplas y listas hacia CSV y viceversa.

Siendo un formato tan simple, resulta muy práctico para transmitir o almacenar información que luego debe ser procesada por otro sistema. También es la forma más sencilla de generar un archivo que pueda ser leído por los programas de hojas de cálculo (Excel, Calc, Gnumeric, etc), aunque no guarda información de formato de texto (negritas, colores, tamaños de letra, etc).

En caso de que no sea suficiente, siempre se puede recurrir a formatos más complejos, como XML o JSON.

Enlaces relacionados:

Activa Javascript para para cargar los comentarios, basados en DISQUS

El Blog de ElCodiguero funciona sobre Pelican

Inicio | Blog | Acerca de