Leer CSV línea por línea en Python
- Estructura de archivo de un archivo CSV
-
Lea el archivo CSV línea por línea usando
csv.reader
en Python -
Lea el archivo CSV línea por línea usando el objeto
DictReader
en Python - Conclusión
En Python, es común leer un archivo e imprimirlo en columnas. Pero leer el archivo fila por fila puede resultar un poco confuso a veces.
Este artículo abordará cómo leer un archivo CSV línea por línea en Python. Usaremos el módulo csv
de python para manejar los archivos CSV en Python.
Antes de leer el archivo CSV línea por línea, veamos primero el formato de archivo de los archivos CSV. Esto nos ayudará a manipular mejor los archivos CSV.
Estructura de archivo de un archivo CSV
CSV
significa Valores separados por comas
; es un formato de archivo simple que almacena datos en tablas. Estas tablas pueden tener la forma de una hoja de cálculo o una base de datos.
También podemos crear un archivo CSV en un editor de texto simple como Notepad
. Cada línea del archivo CSV corresponde a un registro de la tabla.
Además, cada registro tiene uno o más campos
. La sección transversal de un campo y un registro se denomina celda
. Estos campos están separados por comas
(,
).
A veces, también llamamos a esta coma un delimitador. Tenga en cuenta que este formato recibe su nombre del uso de la coma como separador de campo. Los archivos CSV se utilizan ampliamente debido a su compatibilidad con muchos programas, bases de datos, hojas de cálculo y software de procesamiento de textos.
Ahora vamos a crear un archivo CSV utilizando la estructura de archivos descrita anteriormente. Después de crear el archivo, leeremos el archivo CSV línea por línea usando diferentes funciones.
Podemos crear un archivo CSV usando una hoja de cálculo en Microsoft Excel. Sin embargo, si no tiene Microsoft Excel instalado en su sistema, puede usar el Bloc de notas u otros editores de texto para crear un archivo CSV.
Podemos cambiar la extensión del archivo a .csv
para hacer esto. Además, no olvide seguir el formato de un archivo CSV. Aquí están todos los pasos que debemos realizar.
-
Abra un editor de texto y escriba el contenido en el formato CSV correcto. Los encabezados, así como los registros, están separados por comas. Cada registro comienza en una nueva línea. Esto se muestra a continuación:
Roll Number,Name,Subject 1,Harry Potter,Magical Creatures 2,Ron Weasley,Divination 3,Hermione Granger,Dark arts
Guarde este archivo como Demo.csv
. El archivo CSV se creará correctamente.
Podemos usar la función open()
para abrir el archivo CSV en Python. Sin embargo, preferimos usar el módulo python csv creado únicamente para este propósito. Para usar el módulo csv, primero debemos importarlo.
import csv
Usaremos el archivo Demo.csv
que ya hemos creado para demostrar. El archivo se ve de la siguiente manera:
Roll Number,Name,Subject
1,Harry Potter,Magical Creatures
2,Ron Weasely,Divination
3,Hermione Granger,Dark arts
Para leer el contenido de este CSV línea por línea en Python, usaremos el módulo csv, que además proporciona dos clases. Estas clases son csv.reader
y csv.DictReader
.
Veamos estas clases una por una.
Lea el archivo CSV línea por línea usando csv.reader
en Python
La clase csv.reader
del módulo csv nos permite leer e iterar sobre las líneas de un archivo CSV como una lista de valores. Mira el ejemplo de abajo:
from csv import reader
# open file
with open("Demo.csv", "r") as my_file:
# pass the file object to reader()
file_reader = reader(my_file)
# do this for all the rows
for i in file_reader:
# print the rows
print(i)
Usamos el objeto lector para iterar sobre las filas del archivo Demo.csv
. El objeto lector actúa como un iterador. Esto asegura que solo una línea permanezca en la memoria a la vez.
Producción :
['Roll Number', 'Name', 'Subject']
['1', 'Harry Potter', 'Magical Creatures']
['2', 'Ron Weasley', 'Divination']
['3', 'Hermione Granger', 'Dark arts']
Veamos las funciones utilizadas aquí.
La función open()
de Python se utiliza para abrir un archivo. Una vez que abre un archivo, devuelve un objeto de archivo.
Sintaxis:
open(file_name, mode)
El parámetro mode
especifica el modo en que queremos abrir el archivo. Puede ser read
, add
, write
o create
.
La función lector()
se utiliza para leer un archivo. Devuelve un objeto lector iterable. En el ejemplo anterior, este objeto iterable es file_reader
, que debe quedar claro a partir del uso del bucle for.
En el ejemplo anterior, los encabezados también se imprimen. También podemos imprimir un archivo CSV sin encabezado. Mira el siguiente ejemplo:
from csv import reader
# skip the first line(the header)
with open("Demo.csv", "r") as my_file:
file_csv = reader(my_file)
head = next(file_csv)
# check if the file is empty or not
if head is not None:
# Iterate over each row
for i in file_csv:
# print the rows
print(i)
Producción :
['1', 'Harry Potter', 'Magical Creatures']
['2', 'Ron Weasley', 'Divination']
['3', 'Hermione Granger', 'Dark arts']
Aquí, los encabezados no se imprimen. Este enfoque funciona de manera similar al enfoque anterior, excepto que omitimos la primera fila durante la iteración. Hemos usado la función next()
para saltarnos el encabezado.
La función next()
en Python devuelve el siguiente elemento presente en un iterador. Su sintaxis se describe a continuación.
Sintaxis:
next(iterable_object / iterable, default)
Iterable
u objeto iterable
es el conjunto de valores a través de los cuales tenemos que iterar. default
es un parámetro opcional que el iterable devuelve si llega a su fin.
Lea el archivo CSV línea por línea usando el objeto DictReader
en Python
csv.reader
lee e imprime el archivo CSV como una lista.
Sin embargo, el objeto DictReader
itera sobre las filas del archivo CSV como un diccionario. De la misma forma que csv.reader
devuelve cada fila como una lista, ObjectReader
devuelve cada fila como un diccionario.
Mira el ejemplo de abajo:
from csv import DictReader
# open the file
with open("Demo.csv", "r") as my_file:
# passing file object to DictReader()
csv_dict_reader = DictReader(my_file)
# iterating over each row
for i in csv_dict_reader:
# print the values
print(i)
Producción :
{'Roll Number': '1', 'Name': 'Harry Potter', 'Subject': 'Magical Creatures'}
{'Roll Number': '2', 'Name': 'Ron Weasley', 'Subject': 'Divinition'}
{'Roll Number': '3', 'Name': 'Hermione Granger', 'Subject': 'Dark arts'}
La función DictReader
es similar a la función reader
excepto en cómo devuelve la información. Mapea y devuelve los valores como un diccionario
donde los nombres de los campos actúan como claves del diccionario y los valores consisten en los datos de una fila en particular.
Conclusión
En este artículo, discutimos los conceptos básicos de CSV. También vimos las dos formas de leer un CSV línea por línea en Python. También vimos cómo podíamos crear un archivo CSV por nuestra cuenta usando un editor de texto como el Bloc de notas.
Artículo relacionado - Python CSV
- Compare dos archivos CSV e imprima las diferencias usando Python
- Importe múltiples archivos CSV en Pandas y concatene en un marco de datos
- Python divide CSV en varios archivos
- Convertir XML a CSV usando Python
- Python escribe en CSV línea por línea