Cómo leer y escribir archivos CSV en Python

El formato CSV es el formato de importación y exportación más utilizado para bases de datos y hojas de cálculo. Este tutorial le dará una introducción detallada a CSV y los módulos y clases disponibles para leer y escribir datos en archivos CSV. También cubrirá un ejemplo de trabajo para mostrarle cómo leer y escribir datos en un archivo CSV en Python.

Qué es un archivo CSV?

Un archivo CSV (valores separados por comas) permite que los datos se guarden en una estructura tabular con una extensión .csv. Los archivos CSV se han utilizado ampliamente en aplicaciones de comercio electrónico porque se consideran muy fáciles de procesar. Algunas de las áreas donde se han utilizado incluyen:

  • Importación y exportación de datos de clientes.
  • importando y exportando productos
  • pedidos de exportación
  • Exportación de informes analíticos de comercio electrónico.

Módulos de lector y escritor

El módulo CSV tiene varias funciones y clases disponibles para leer y escribir CSV, e incluyen:

  • función csv.reader
  • función csv.writer
  • clase csv.Dictwriter
  • clase csv.DictReader

csv.reader

El módulo csv.reader toma los siguientes parámetros:

  • archivo csv: Este suele ser un objeto que admite el protocolo iterador y generalmente devuelve una cadena cada vez que se __siguiente__() método se llama.
  • dialecto = 'excel': Un parámetro opcional que se usa para definir un conjunto de parámetros específicos para un dialecto CSV particular.
  • fmtparams: Un parámetro opcional que se puede usar para anular los parámetros de formato existentes.

Aquí hay un ejemplo de cómo usar el módulo csv.reader.

importar csv con open ('example.csv', newline = ") como File: reader = csv.reader (File) para row en reader: print (row)

modulo csv.writer

Este módulo es similar al módulo csv.reader y se utiliza para escribir datos en un CSV. Toma tres parámetros:

  • csvfilmi: Estapuedeser cualquier objeto con un escribir() método.
  • dialecto = 'excel': Un parámetro opcional utilizado para definir un conjunto de parámetros específicos para un CSV particular.
  • fmtparam: Un parámetro opcional que se puede usar para anular los parámetros de formato existentes.

DictReader y DictWriter Classes

El DictReader y el DictWriter son clases disponibles en Python para leer y escribir en CSV. Aunque son similares a las funciones de lector y escritor, estas clases usan objetos de diccionario para leer y escribir en archivos csv.

DictReader

Crea un objeto que mapea la información leída en un diccionario cuyas claves son dadas por el nombres de campo parámetro. Este parámetro es opcional, pero cuando no se especifica en el archivo, los datos de la primera fila se convierten en las claves del diccionario..

Ejemplo:

importar csv con open ('name.csv') como csvfile: reader = csv.DictReader (csvfile) para la fila en el lector: print (fila ['first_name'], fila ['last_name']) 

DictWriter

Esta clase es similar a la clase DictWriter y hace lo contrario, que es escribir datos en un archivo CSV. La clase se define como csv.DictWriter(archivo csv, nombres de campo, restval = ", extrasaction = 'subir', dialecto = 'excel', * args, **kwds)

los nombres de campo el parámetro define la secuencia de teclas que identifican el orden en que los valores en el diccionario se escriben en el archivo CSV. A diferencia del DictReader, esta clave no es opcional y debe definirse para evitar errores al escribir en un CSV.

Dialectos y Formateo

Un dialecto es una clase auxiliar que se utiliza para definir los parámetros para un determinado lector o escritor ejemplo. Los dialectos y los parámetros de formato deben declararse al realizar una función de lector o escritor.

Hay varios atributos que son compatibles con un dialecto:

  • delimitador: Una cadena utilizada para separar campos. Es por defecto ','.
  • doble cita: Controla cómo las instancias de cotizar aparecer dentro de un campo debe ser citado. Puede ser cierto o falso.
  • escapechar: Una cadena utilizada por el escritor para escapar de la delimitador Si citando se establece en QUOTE_NONE.
  • lineterminador: Una cadena utilizada para terminar las líneas producidas por el escritor. Es por defecto '\ r \ n'.
  • cotizar: Una cadena utilizada para citar campos que contienen caracteres especiales. Es por defecto'' '.
  • skipinitialspace: Si se establece en Cierto, Cualquier espacio en blanco inmediatamente después de la delimitador es ignorado.
  • estricto: Si se establece enCierto, genera un error de excepción en una entrada de CSV incorrecta.
  • citando: Controla cuándo deben generarse citas al leer o escribir en un CSV.

Leyendo un archivo CSV

Veamos cómo leer un archivo CSV usando los módulos de ayuda que hemos discutido anteriormente.

Cree su archivo CSV y guárdelo como example.csv. Asegúrese de que tiene la .csv Extensión y completar algunos datos. Aquí tenemos nuestro archivo CSV que contiene los nombres de los estudiantes y sus calificaciones.

A continuación se muestra el código para leer los datos en nuestro CSV usando tanto csv.reader función y la csv.DictReader clase.

Leyendo un archivo CSV con csv.reader

importar csv con abrir ('example.csv') como Archivo: reader = csv.reader (Archivo, delimitador = ",", quotechar = ",", quoting = csv.QUOTE_MINIMAL) para la fila en el lector: imprimir (fila) 

En el código anterior, importamos el módulo CSV y luego abrimos nuestro archivo CSV como Expediente. Luego definimos el objeto lector y usamos el csv.reader Método para extraer los datos en el objeto. Luego iteramos sobre el lector Objetar y recuperar cada fila de nuestros datos..

Mostramos los datos leídos imprimiendo su contenido en la consola. También hemos especificado los parámetros requeridos, como delimitador, quotechar y cotización.

Salida

['first_name', 'last_name', 'Grade'] ['Alex', 'Brian', 'B'] ['Rachael', 'Rodriguez', 'A'] ['Tom', 'smith', 'C '] 

Leyendo un archivo CSV con DictReader

Como mencionamos anteriormente, DictWriter nos permite leer un archivo CSV asignando los datos a un diccionario en lugar de cadenas como en el caso de csv.reader módulo. Aunque el nombre de campo es un parámetro opcional, es importante tener siempre sus columnas etiquetadas para facilitar la lectura.

Aquí le mostramos cómo leer un CSV utilizando la clase DictWriter..

importar csv results = [] with open ('example.csv') como File: reader = csv.DictReader (File) para row en reader: results.append (row) print results 

Primero importamos el módulo csv e inicializamos una lista vacía resultados que utilizaremos para almacenar los datos recuperados. Luego definimos el objeto lector y usamos el csv.DictReader Método para extraer los datos en el objeto. Luego iteramos sobre el lector Objetar y recuperar cada fila de nuestros datos..

Finalmente, agregamos cada fila a la lista de resultados e imprimimos el contenido en la consola.

Salida

['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name': 'Rodriguez ', ' Grade ':' C ',' first_name ':' Tom ',' last_name ':' smith ', ' Grade ':' B ',' first_name ':' Jane ',' last_name ': 'Oscar', 'Grado': 'A', 'first_name': 'Kennzy', 'last_name': 'Tim'] 

Como puede ver arriba, usar la clase DictReader es mejor porque proporciona nuestros datos en un formato de diccionario en el que es más fácil trabajar con ellos..

Escribir en un archivo CSV

Veamos ahora cómo escribir datos en un archivo CSV usando el csv.writer función y la csv.dictwriter clase discutida al principio de este tutorial.

Escribir en un archivo CSV usando csv.writer

El siguiente código escribe los datos definidos en el ejemplo2.csv expediente.

importar csv myData = [["first_name", "second_name", "Grade"], ['Alex', 'Brian', 'A'], ['Tom', 'Smith', 'B']] myFile = abrir ('example2.csv', 'w') con myFile: writer = csv.writer (myFile) writer.writerows (myData) print ("Escritura completa") 

Primero importamos el módulo csv, y el escritor() La función creará un objeto adecuado para escribir. Para iterar los datos sobre las filas, necesitaremos usar el escritores () función.

Aquí está nuestro CSV con los datos que le hemos escrito..

Escribir en un archivo CSV usando DictWriter

Escribamos los siguientes datos a un CSV.

data = ['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name': 'Rodriguez', 'Grade': 'C', 'first_name': 'Tom', 'last_name': 'smith', 'Grade': 'B', 'first_name': 'Jane', 'last_name ':' Oscar ', ' Grado ':' A ',' first_name ':' Kennzy ',' last_name ':' Tim '] 

El código es como se muestra a continuación.

importar csv con open ('example4.csv', 'w') como csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] writer = csv.DictWriter (csvfile, fieldnames = fieldnames) writer.writeheader () writer.writerow ('Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian') writer.writerow ('Grade': 'A', 'first_name': 'Rachael' , 'last_name': 'Rodriguez') writer.writerow ('Grade': 'B', 'first_name': 'Jane', 'last_name': 'Oscar') writer.writerow ('Grade': ' B ',' first_name ':' Jane ',' last_name ':' Loive ') print ("Escritura completa")

Primero definimos el nombres de campo, que representará los encabezados de cada columna en el archivo CSV. los writerrow () El método escribirá en una fila a la vez. Si desea escribir todos los datos a la vez, utilizará el writerrows () método.

Aquí es cómo escribir a todas las filas a la vez.

importar csv con open ('example5.csv', 'w') como csvfile: fieldnames = ['first_name', 'last_name', 'Grade'] writer = csv.DictWriter (csvfile, fieldnames = fieldnames) writer.writeheader () writer.writerows (['Grade': 'B', 'first_name': 'Alex', 'last_name': 'Brian', 'Grade': 'A', 'first_name': 'Rachael', 'last_name ':' Rodriguez ', ' Grade ':' C ',' first_name ':' Tom ',' last_name ':' smith ', ' Grade ':' B ',' first_name ':' Jane ', 'last_name': 'Oscar', 'Grade': 'A', 'first_name': 'Kennzy', 'last_name': 'Tim']) print ("escritura completa")

Conclusión

Este tutorial ha cubierto la mayor parte de lo que se requiere para poder leer y escribir con éxito en un archivo CSV utilizando las diferentes funciones y clases proporcionadas por Python. Los archivos CSV se han utilizado ampliamente en aplicaciones de software porque son fáciles de leer y administrar y su pequeño tamaño los hace relativamente rápidos de procesar y transferir..

No dude en ver lo que tenemos disponible para la venta y para estudiar en el mercado, y no dude en hacer cualquier pregunta y proporcionar sus valiosos comentarios utilizando el siguiente feed..

Aprender Python

Aprende Python con nuestra completa guía de tutoriales de Python, ya sea que estés empezando o seas un programador experimentado que busca aprender nuevas habilidades..