Leer CSV línea por línea en Python

Shikha Chaudhary 8 octubre 2023
  1. Estructura de archivo de un archivo CSV
  2. Lea el archivo CSV línea por línea usando csv.reader en Python
  3. Lea el archivo CSV línea por línea usando el objeto DictReader en Python
  4. Conclusión
Leer CSV línea por línea en Python

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

Artículo relacionado - Python File