Saltar al contenido

Usando el módulo CSV en Python

Si desea importar o exportar hojas de cálculo y bases de datos para usarlas en el intérprete de Python, debe confiar en el módulo CSV o en el formato de valores separados por comas.

¿Qué es un archivo CSV?

Los archivos CSV se utilizan para almacenar una gran cantidad de variables o datos. Son hojas de cálculo increíblemente simplificadas, piense en Excel, solo el contenido se almacena en texto sin formato.

Y el módulo CSV es una función incorporada que permite a Python analizar este tipo de archivos.

Vale la pena señalar que cuando trabaja con un archivo CSV, está incursionando en el desarrollo JSON.

JSON, que significa notación de objetos JavaScript, es un formato que se utiliza para almacenar información como código JavaScript en archivos de texto sin formato. No necesita saber JavaScript para trabajar con estos archivos, ni la práctica se limita a ese lenguaje. Obviamente, dado que estamos trabajando con Python aquí.

El texto dentro de un archivo CSV se presenta en filas, y cada una de ellas tiene columnas, todas separadas por comas. Cada línea del archivo es una fila en la hoja de cálculo, mientras que las comas se utilizan para definir y separar celdas.

Trabajar con el módulo CSV

Para extraer información de archivos CSV, utiliza métodos de bucle y división para obtener los datos de columnas individuales.

El módulo CSV existe explícitamente para manejar esta tarea, lo que facilita mucho el manejo de archivos con formato CSV. Esto se vuelve especialmente importante cuando trabaja con datos que se han exportado desde hojas de cálculo y bases de datos reales a archivos de texto. Esta información puede ser difícil de leer por sí sola.

Desafortunadamente, no existe un estándar, por lo que el módulo CSV usa “dialectos” para admitir el análisis utilizando diferentes parámetros. Junto con un lector y escritor genérico, el módulo incluye un dialecto para trabajar con Microsoft Excel y archivos relacionados.

Funciones CSV

El módulo CSV incluye todas las funciones necesarias integradas. Son:

  • csv.reader
  • csv.writer
  • csv.register_dialect
  • csv.unregister_dialect
  • csv.get_dialect
  • csv.list_dialects
  • csv.field_size_limit

En esta guía solo nos centraremos en las funciones de lectura y escritura que le permiten editar, modificar y manipular los datos almacenados en un archivo CSV.

Lectura de archivos CSV

Para extraer datos de un archivo CSV, debe utilizar la función de lector para generar un objeto de lector.

La función de lector está diseñada para tomar cada línea del archivo y hacer una lista de todas las columnas. Luego, simplemente elija la columna para la que desea los datos variables.

Suena mucho más complicado de lo que es. Para demostrarlo, echemos un vistazo a un ejemplo.

import CSV
With open(‘some.csv’, ‘rb’) as f:
reader = csv.reader(f)
for row in reader:
print row

¿Observa cómo se usa el primer comando para importar el módulo CSV?

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.

Veamos otro ejemplo.

import csv 
import sys
 
f = open(sys.argv[1], ‘rb’)
reader = csv.reader(f)
for row in reader
print row
 
f.close()

En las dos primeras líneas, estamos importando los módulos CSV y sys. Luego, abrimos el archivo CSV del que queremos extraer información.

A continuación, creamos el objeto lector, iteramos las filas del archivo y luego las imprimimos. Finalmente, cerramos la operación.

Archivo de muestra CSV

Vamos a echar un vistazo a un archivo CSV de ejemplo. Preste atención a cómo se almacena y presenta la información.

Title,Release Date,Director
And Now For Something Completely Different,1971,Ian MacNaughton
Monty Python And The Holy Grail,1975,Terry Gilliam and Terry Jones
Monty Python's Life Of Brian,1979,Terry Jones
Monty Python Live At The Hollywood Bowl,1982,Terry Hughes
Monty Python's The Meaning Of Life,1983,Terry Jones

Ejemplo de lectura de archivos CSV

Comenzaremos con un archivo CSV básico que tiene 3 columnas, que contiene las variables “A”, “B”, “C” y “D”.

$ cat test.csv
A,B,”C D”
1,2,”3 4”
5,6,7

Luego, usaremos el siguiente programa Python para leer y mostrar el contenido del archivo CSV anterior.

import csv
 
ifile = open(‘test.csv’, “rb”)
reader = csv.reader(ifile)
 
rownum = 0
for row in reader:
# Save header row.
if rownum ==0:
header = row
else:
colnum = 0
for col in row:
print ‘%-8s: %s’ % (header[colnum], col)
colnum + = 1
 
rownum + = 1
 
ifile.close()

Cuando ejecutamos este programa en Python, la salida se verá así:

$ python csv1.py
A      : 1 
B      : 2
C D      : 3 4
A      : 5 
B      : 6
C D      : 7

Escribir en archivos CSV

Cuando tenga un conjunto de datos que le gustaría almacenar dentro de un archivo CSV, es hora de hacer lo contrario y usar la función de escritura. Lo crea o no, esto es tan fácil de lograr como leerlos.

los escritor() La función creará un objeto adecuado para escribir. Para iterar los datos sobre las filas, deberá utilizar el escritor ahora() función.

He aquí un ejemplo.

El siguiente programa de Python convierte un archivo llamado “test.csv” en un archivo CSV que usa pestañas como separador de valores con todos los valores entre comillas. El carácter delimitador y el carácter de cita, así como cómo / cuándo citar, se especifican cuando se crea el escritor. Estas mismas opciones están disponibles al crear objetos de lector.

import csv
 
ifile  = open('test.csv', "rb")
reader = csv.reader(ifile)
ofile  = open('ttest.csv', "wb")
writer = csv.writer(ofile, delimiter="", quotechar='"', quoting=csv.QUOTE_ALL)
 
for row in reader:
    writer.writerow(row)
 
ifile.close()
ofile.close()

Cuando ejecute este programa, la salida será:

$ python csv2.py
$ cat ttest.csv
"A"     "B"     "C D"
"1"     "2"     "3 4"
"5"     "6"     "7"

Citando archivos CSV

Con el módulo CSV, también puede realizar una variedad de funciones de cotización.

Son:

  • csv.QUOTE_TODOS – Citar todo, sin importar el tipo.
  • csv.QUOTE_MÍNIMO – Campos de cotización con caracteres especiales
  • csv.QUOTE_NO NUMÉRICO – Cite todos los campos que no sean números enteros o flotantes
  • csv.QUOTE_NINGUNO – No cite nada en la salida

Más lecturas y recursos de Python

http://docs.python.org/2/library/csv.html http://www.doughellmann.com/PyMOTW/csv/ http://effbot.org/librarybook/csv.htm http://www.linuxjournal.com/content/handling-csv-files-python http://programming-crash-course.codepoint.net/there_are_columns

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.