Leer un CSV con su encabezado en Python
Python es un lenguaje de programación de propósito general definido y fácil de entender.
Python es uno de los cinco lenguajes de programación más importantes a nivel mundial porque tiene una sintaxis sencilla y muchas utilidades para múltiples dominios, como aprendizaje automático, ciencia de datos, desarrollo de juegos, desarrollo web, desarrollo de aplicaciones, etc. escenas.
Python hace que el manejo de archivos sea una tarea sencilla. Podemos crear archivos, leer archivos, agregar datos o sobrescribir datos en archivos existentes fácilmente usando Python, ya que puede manejar muchos formatos de archivo como txt
, csv
, xlsx
, pdf
, etc.
Además, tiene muchos paquetes de código abierto que hacen que el manejo de archivos sea más eficiente y sencillo.
Aprenderemos a leer un archivo CSV y su encabezado usando Python en este artículo. Para que estemos en la misma nota, usaremos un archivo de muestra con fines ilustrativos en los fragmentos de código. Puede descargar este archivo CSV desde aquí. Los ejemplos siguientes considerarán la primera fila del archivo CSV como su encabezado.
Leer un CSV con su encabezado en Python
Python tiene un paquete csv
que podemos usar para leer archivos CSV. Este paquete está presente de forma predeterminada en la instalación oficial de Python.
El paquete csv
tiene un método reader()
que podemos usar para leer archivos CSV. Devuelve un objeto iterable que podemos atravesar para imprimir el contenido del archivo CSV que se está leyendo.
from csv import reader
file_name = "email.csv"
with open(file_name, "r") as csv_file:
csv_reader = reader(csv_file)
for row in csv_reader:
print(row)
Producción :
['Login email', 'Identifier', 'First name', 'Last name']
['laura@example.com', '2070', 'Laura', 'Grey']
['craig@example.com', '4081', 'Craig', 'Johnson']
['mary@example.com', '9346', 'Mary', 'Jenkins']
['jamie@example.com', '5079', 'Jamie', 'Smith']
La complejidad temporal de la solución anterior es O(n)
.
Como podemos ver, la salida muestra que la primera fila es el encabezado y las otras filas tienen los valores. Podemos embellecer aún más la salida almacenando el encabezado en una variable separada e imprimiendo todo en un formato de apariencia adecuada.
from csv import reader
file_name = "email.csv"
with open(file_name, "r") as csv_file:
csv_reader = reader(csv_file)
header = next(csv_reader)
print("Header:")
print(", ".join(header))
print("Values:")
for row in csv_reader:
print(", ".join(row))
Producción :
Header:
Login email, Identifier, First name, Last name
Values:
laura@example.com, 2070, Laura, Grey
craig@example.com, 4081, Craig, Johnson
mary@example.com, 9346, Mary, Jenkins
jamie@example.com, 5079, Jamie, Smith
La complejidad temporal de la solución anterior es O(n)
.
En el código anterior, csv_reader
es iterable. Usando el método next()
, primero obtuvimos el encabezado de csv_reader
y luego iteramos sobre los valores usando un bucle for
.
Como sugiere el nombre, los archivos CSV tienen valores separados por comas.
A veces, los valores dentro de los archivos CSV no están separados por comas; podrían estar usando un punto y coma (;
), dos puntos (:
), etc., como separador. En tales casos, se puede utilizar el argumento delimiter
del método reader()
del paquete csv
.
El argumento delimiter
acepta una cadena o un carácter que debe considerarse como separador. Por ejemplo, si un archivo CSV tiene ;
como separador, el código para leer dicho archivo CSV sería el siguiente.
from csv import reader
file_name = "email.csv"
with open(file_name, "r") as csv_file:
csv_reader = reader(csv_file, delimiter=";") # Important
header = next(csv_reader)
print("Header:")
print(", ".join(header))
print("Values:")
for row in csv_reader:
print(", ".join(row))
Producción :
Header:
Login email, Identifier, First name, Last name
Values:
laura@example.com, 2070, Laura, Grey
craig@example.com, 4081, Craig, Johnson
mary@example.com, 9346, Mary, Jenkins
jamie@example.com, 5079, Jamie, Smith