Convertir CSV a lista de diccionarios con Python - Ejemplo de código
Hoy vamos a ver un ejemplo simple con Python y los archivos CSV. Veremos cómo convertir un CSV a un arreglo.
Primero vamos a convertir cada columna del archivo a un diccionario de Python, y después vamos a agregar ese diccionario a nuestra lista.
En el ejemplo te mostraré cómo leer datos enteros y flotantes, así como cadenas. De este modo tú podrás leer cualquier archivo separado por comas para tenerlo como array en Python.
Nota: yo decidí usar un diccionario, tú podrías usar una lista de listas o cualquier otra cosa.
Vamos a abrir y leer el archivo línea por línea (omitiendo el encabezado si es necesario). En cada paso, tendremos una línea del CSV.
Ahora convertiremos esa línea a arreglo con split, y ya tendremos las columnas separadas. Luego transformamos cada valor a su tipo en caso de ser necesario, y lo asignamos al diccionario.
Cuando tenemos el diccionario, lo agregamos al arreglo con append. Y finalmente ya tendremos el CSV cargado a nuestro arreglo con Python.
Para este ejemplo tengo un archivo de alumnos en donde la primera línea es el encabezado y luego tenemos, en orden, el nombre, la edad, la altura y la matrícula.
Nombre,Edad,Altura,Matrícula
Luis,50,1.2,1
Pedro,22,1.3,2
Link,34,0.56,3
Juan,10,2,4
Zero,12,1.2,5
Steve,23,2.5,6
(dale a view raw al gist para que veas el archivo real).
El orden de las columnas importa, ya que los vamos a leer así más adelante.
Entonces abrimos el archivo. Definimos el separador y la lista donde vamos a tener los datos:
separador = ","
with open(nombre_archivo, encoding="utf-8") as archivo:
next(archivo) # Omitir encabezado del archivo
alumnos = []
Luego iteramos el archivo línea por línea, quitamos el salto de línea con rstrip, convertimos y asignamos. La definición del diccionario está junto con la llamada a append
en la línea 8.
for linea in archivo:
linea = linea.rstrip("\n") # Quitar salto de línea
columnas = linea.split(separador)
nombre = columnas[0]
edad = int(columnas[1])
altura = float(columnas[2])
matricula = columnas[3]
alumnos.append({
"nombre": nombre,
"edad": edad,
"altura": altura,
"matricula": matricula,
})
return alumnos
Fíjate en que estoy usando int
y float
para convertir las cadenas a números. Finalmente encerramos todo el comportamiento en una función:
# https://parzibyte.me/blog
def obtener_csv_como_lista_de_diccionarios(nombre_archivo):
separador = ","
with open(nombre_archivo, encoding="utf-8") as archivo:
next(archivo) # Omitir encabezado del archivo
alumnos = []
for linea in archivo:
linea = linea.rstrip("\n") # Quitar salto de línea
columnas = linea.split(separador)
nombre = columnas[0]
edad = int(columnas[1])
altura = float(columnas[2])
matricula = columnas[3]
alumnos.append({
"nombre": nombre,
"edad": edad,
"altura": altura,
"matricula": matricula,
})
return alumnos
Y ya podemos invocar a esta función desde cualquier lugar, pasándole el nombre del archivo.
Entonces con el siguiente CSV:
Nombre,Edad,Altura,Matrícula
Luis,50,1.2,1
Pedro,22,1.3,2
Link,34,0.56,3
Juan,10,2,4
Zero,12,1.2,5
Steve,23,2.5,6
Podemos usar el siguiente código para leer el archivo e imprimir cada dato por separado:
# https://parzibyte.me/blog
def obtener_csv_como_lista_de_diccionarios(nombre_archivo):
separador = ","
with open(nombre_archivo, encoding="utf-8") as archivo:
next(archivo) # Omitir encabezado del archivo
alumnos = []
for linea in archivo:
linea = linea.rstrip("\n") # Quitar salto de línea
columnas = linea.split(separador)
nombre = columnas[0]
edad = int(columnas[1])
altura = float(columnas[2])
matricula = columnas[3]
alumnos.append({
"nombre": nombre,
"edad": edad,
"altura": altura,
"matricula": matricula,
})
return alumnos
def main():
alumnos = obtener_csv_como_lista_de_diccionarios("alumnos.csv")
for alumno in alumnos:
nombre = alumno["nombre"]
edad = alumno["edad"]
altura = alumno["altura"]
matricula = alumno["matricula"]
print(
f"Tenemos a {nombre} con {edad} años, altura {altura} y matrícula {matricula}")
main()
La salida es correcta:
En este caso solo estoy imprimiendo los datos pero tú puedes hacer cualquier otro tipo de cosas con ellos.
Y con este ejemplo espero que quede claro cómo leer un CSV en Python para convertirlo a un arreglo.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.