Introducción a los archivos CSV y el módulo csv en Python
Los archivos CSV (Comma Separated Values) son uno de los formatos más populares para almacenar datos tabulares, ya que son simples, legibles y ampliamente soportados por diferentes aplicaciones.
Python ofrece una manera muy sencilla y eficiente de leer y escribir archivos CSV a través de su módulo incorporado csv.
En esta guía paso a paso, aprenderás cómo manipular archivos CSV con Python utilizando el módulo csv, desde lo más básico hasta algunas opciones avanzadas.
¿Qué es el módulo csv en Python?
El módulo csv es una biblioteca estándar de Python que proporciona funciones para trabajar con archivos CSV. Permite leer, escribir y modificar datos en este formato de manera eficiente y sencilla,
sin la necesidad de instalar paquetes externos.
¿Cómo leer archivos CSV con el módulo csv?
Paso 1: Preparar el archivo CSV
Supongamos que tienes un archivo llamado datos.csv con el siguiente contenido:
nombre,edad,ciudad Juan,28,Madrid Ana,22,Barcelona Pedro,35,Valencia
Paso 2: Leer el archivo CSV línea por línea
Para leer un archivo CSV en Python usando el módulo csv, sigue estos pasos:
- Abre el archivo usando la función open() en modo lectura.
- Crea un objeto csv.reader y pásale el archivo abierto.
- Itera sobre el objeto reader para acceder a cada fila como una lista.
Ejemplo de código:
import csv
with open(datos.csv, r, newline=, encoding=utf-8) as archivo:
lector = csv.reader(archivo)
for fila in lector:
print(fila)
Salida esperada:
[nombre, edad, ciudad] [Juan, 28, Madrid] [Ana, 22, Barcelona] [Pedro, 35, Valencia]
Paso 3: Leer archivos CSV como diccionario
Si deseas trabajar con los datos como diccionarios (donde las claves son los nombres de las columnas), puedes usar csv.DictReader:
import csv
with open(datos.csv, r, newline=, encoding=utf-8) as archivo:
lector = csv.DictReader(archivo)
for fila in lector:
print(fila)
Salida esperada:
{nombre: Juan, edad: 28, ciudad: Madrid} {nombre: Ana, edad: 22, ciudad: Barcelona} {nombre: Pedro, edad: 35, ciudad: Valencia}
¿Cómo escribir archivos CSV usando el módulo csv?
Paso 1: Preparar los datos a escribir
Puedes tener tus datos como una lista de listas o como una lista de diccionarios.
Por ejemplo:
# Lista de listas
datos = [
[nombre, edad, ciudad],
[Juan, 28, Madrid],
[Ana, 22, Barcelona],
[Pedro, 35, Valencia]
]
# Lista de diccionarios
datos_dicc = [
{nombre: Juan, edad: 28, ciudad: Madrid},
{nombre: Ana, edad: 22, ciudad: Barcelona},
{nombre: Pedro, edad: 35, ciudad: Valencia}
]
Paso 2: Escribir una lista de listas en un archivo CSV
Para escribir datos en un archivo CSV usando listas, sigue estos pasos:
- Abre el archivo en modo escritura (
w
). - Crea un objeto csv.writer.
- Usa writer.writerow() para escribir una sola fila o writer.writerows() para varias filas.
import csv
datos = [
[nombre, edad, ciudad],
[Juan, 28, Madrid],
[Ana, 22, Barcelona],
[Pedro, 35, Valencia]
]
with open(nuevo_datos.csv, w, newline=, encoding=utf-8) as archivo:
escritor = csv.writer(archivo)
escritor.writerows(datos)
Paso 3: Escribir una lista de diccionarios en un archivo CSV
Si tienes los datos como diccionarios, utiliza csv.DictWriter:
import csv
datos_dicc = [
{nombre: Juan, edad: 28, ciudad: Madrid},
{nombre: Ana, edad: 22, ciudad: Barcelona},
{nombre: Pedro, edad: 35, ciudad: Valencia}
]
with open(nuevo_datos_dicc.csv, w, newline=, encoding=utf-8) as archivo:
campos = [nombre, edad, ciudad]
escritor = csv.DictWriter(archivo, fieldnames=campos)
escritor.writeheader()
escritor.writerows(datos_dicc)
Opciones avanzadas al trabajar con archivos CSV en Python
Separadores personalizados
No todos los archivos CSV usan la coma como separador. Puedes especificar un delimitador diferente usando el parámetro delimiter:
import csv
with open(datos_puntoycoma.csv, r, newline=, encoding=utf-8) as archivo:
lector = csv.reader(archivo, delimiter=;)
for fila in lector:
print(fila)
Manejo de comillas y caracteres especiales
El módulo csv permite manejar comillas y caracteres especiales mediante los parámetros quotechar y quoting:
import csv
datos = [
[nombre, comentario],
[Juan, Hola, ¿cómo estás?],
[Ana, Me gusta el "Python"]
]
with open(comentarios.csv, w, newline=, encoding=utf-8) as archivo:
escritor = csv.writer(archivo, quotechar=", quoting=csv.QUOTE_MINIMAL)
escritor.writerows(datos)
Conclusión
En esta guía paso a paso, has aprendido cómo leer y escribir archivos CSV en Python utilizando el módulo csv.
Este módulo es muy versátil y permite adaptar el manejo de archivos CSV a diferentes necesidades, desde lo más básico hasta opciones avanzadas como delimitadores personalizados y manejo de comillas.
Recuerda que el módulo csv es parte de la biblioteca estándar de Python, por lo que no necesitas instalar nada adicional para empezar a trabajar con archivos CSV.