Cómo leer y crear archivos CSV usando Python

Cómo leer y crear archivos CSV usando Python

CSV es el acrónimo de "valores separados por coma". Un archivo CSV es un documento de texto simple utilizado para representar e intercambiar datos tabulares. Cada fila en un archivo CSV representa una "entidad", y cada columna representa un atributo de él. Las columnas generalmente están separadas por una coma, pero otros caracteres se pueden usar como separador de campo en lugar de ella. En este tutorial veremos cómo leer y crear archivos CSV usando Python y específicamente el CSV módulo, que es parte del
Biblioteca estándar de idiomas.

En este tutorial aprenderás:

  • Cómo leer las filas CSV como una lista de cuerdas
  • Cómo leer un CSV como una lista de diccionarios
  • Cómo crear un CSV usando Python
  • Cómo crear un CSV a partir de una lista de diccionarios
Cómo leer y crear archivos CSV usando Python

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Distribución independiente
Software Python3
Otro Conocimientos básicos de Python y Programación Orientada a Objetos
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

CSV - Valor separado por comas

Como ya mencionamos en la introducción de este tutorial, un CSV es solo un simple archivo de texto sin formato, formateado de una manera que nos permita representar e intercambiar datos tabulares. Cada fila en un archivo CSV representa una entidad de algún tipo, excepto el
Primera fila que generalmente contiene los títulos de campo. Veamos un ejemplo. Supongamos que queremos representar a los personajes del libro del señor de los anillos en formato CSV:

Nombre, Race Frodo, Hobbit Aragorn, Man Legolas, Elf Gimli, enano 

El anterior es un ejemplo trivial del contenido de un archivo CSV. Como puede ver, usamos el , (coma) como separador de campo. Guardamos esos datos en un archivo llamado lotr.CSV. Veamos cómo podemos leerlo usando la programación de Python
idioma y el CSV módulo.

Leer un archivo CSV

Para interactuar con un archivo CSV con Python, lo primero que tenemos que hacer es importar el CSV módulo. Escribamos un script simple, solo unas pocas líneas de código:

#!/usr/bin/env python3 import csv if __name__ == '__main__': con Open ('Lotr.csv ', newline = ") como csvfile: lector = csv.Reader (CSVFile) para la fila en el lector: impresión (fila) 


En este ejemplo, suponemos que el script que creamos anteriormente (llamemos guion.py) está en el mismo directorio del archivo CSV, y dicho directorio es nuestro trabajo actual.

Lo primero que hicimos fue importar el CSV módulo; Luego abrimos el archivo en modo de lectura (el valor predeterminado) con un administrador de contexto, para que estemos seguros de que el objeto de archivo siempre está cerrado cuando existe los intérpretes el con bloque, incluso si se produce algún tipo de error. También puedes notar que usamos el nueva línea argumento del abierto función para especificar una cadena vacía como el carácter de Newline. Esta es una medida de seguridad, ya que, como se indica en el CSV módulo
documentación:

Si no se especifica newline = ", las nuevas líneas integradas en el interior de los campos citados no se interpretarán correctamente, y en las plataformas que usan finales de línea \ r \ n en escribir un adicional se agregarán \ r adicionales. Siempre debe ser seguro especificar newline = ", ya que el módulo CSV hace su propio manejo (universal) de Newline.

El csvfile El objeto representa nuestro archivo abierto: lo pasamos como argumento al CSV.lector función que devuelve un objeto de lector que referimos a través del csv_reader variable. Usamos este objeto para iterar a través de cada línea del archivo, que se devuelve como una lista de cadenas. En este caso los imprimimos. Si ejecutamos el script, obtenemos el siguiente resultado:

ps ./guion.py ['nombre', 'raza'] ['frodo', 'hobbit'] ['arragorn', 'man'] ['legolas', 'elf'] ['gimli', 'dwarf']] 

Eso fue bastante fácil, ¿no?? ¿Qué pasa si un personaje que no sea la coma se usa como separador de campo?? En ese caso podríamos usar delimitador parámetro de la función, y especifique el carácter que debe usarse. Digamos que dicho personaje es |. Escribiríamos:

csv_reader = CSV.lector (csvfile, delimiter = "|") 
Copiar

Lea los campos de CSV en un diccionario

El que usamos anteriormente es probablemente la forma más fácil de usar para leer un archivo CSV con Python. El CSV los módulos define también el DictTtreader clase, que promulgamos cada fila en un archivo CSV a un diccionario, donde las claves son los nombres de campo y los valores son su contenido real en fila. Veamos un ejemplo. Así es como modificamos nuestro script:

#!/usr/bin/env python3 import csv if __name__ == '__main__': con Open ('Lotr.csv ', newline = ") como csvfile: lector = csv.Dictreader (CSVFile) para la fila en el lector: impresión (fila) 
Copiar

El DictTtreader El primer argumento obligatorio del constructor de clases es el objeto de archivo creado cuando abrimos el archivo. Si lanzamos el script, esta vez obtenemos el siguiente resultado:

'Nombre': 'Frodo', 'Race': 'Hobbit' 'Name': 'Aragorn', 'Race': 'Man' 'Nombre': 'Legolas', 'Raza': 'Elf'  'Nombre': 'gimli', 'raza': 'dwarf' 

Como ya se dijo, los campos contenidos en la primera fila se utilizan como claves del diccionario; Pero, ¿qué pasa si la primera fila del archivo no contiene los nombres de campo?? En ese caso podemos especificarlos usando el nombres de campo Parámetro del DictTtreader Constructor de clase:

lector = CSV.Dictreader (CSVFile, FieldNames = ['Nombre', 'Race]) 
Copiar

Crear un archivo CSV

Hasta ahora, acabamos de ver cómo leer datos de un archivo CSV, tanto como una lista de cadenas que representa una fila y como un diccionario. Ahora veamos cómo crear archivo CSV. Como siempre, comenzamos con un ejemplo, y luego lo explicamos. Imagine que queremos crear programáticamente el archivo CSV que creamos manualmente antes. Aquí está el código que escribiríamos:

#!/usr/bin/env python3 import csv if __name__ == '__main__': con Open ('Lotr.csv ',' w ', newline = ") como csvfile: escritor = csv.escritor (csvfile) para fila en (('nombre', 'raza'), ('frodo', 'hobbit'), ('aragorn', 'hombre'), ('legoals', 'elf'), (' Gimli ',' enano ')): escritor.Writerow (fila) 


Lo primero que debe notar es que esta vez abrimos el lotr.CSV archivo en modo de escritura (w). En este modo se crea un archivo si no existe, y es truncado de lo contrario (consulte nuestro artículo sobre cómo realizar operaciones de entrada/salida en archivos con Python si desea saber más sobre este tema).

En lugar de un lector Objeto, esta vez creamos un escritor uno, usando el escritor función proporcionada en el CSV módulo. Los parámetros que acepta esta función son muy similares a los aceptados por el lector uno. Podríamos, por ejemplo, especificar un delimitador alternativo usando el parámetro con el mismo nombre.

Dado que en este caso ya conocemos todas las filas de CSV de antemano, podemos evitar usar un bucle y escribirlas todas a la vez usando el escritor Método del objeto del escritor:

#!/usr/bin/env python3 import csv if __name__ == '__main__': con Open ('Lotr.csv ',' w ', newline = ") como csvfile: escritor = csv.escritor (csvfile) escritor.Writerows ((('Nombre', 'Race'), ('Frodo', 'Hobbit'), ('Aragorn', 'Man'), ('Legolas', 'Elf'), ('Gimli', 'Dwarf '))) 

Cree un archivo CSV con el objeto DictWriter

El CSV El módulo proporciona un Presente clase, que permitimos asignar un diccionario a una fila CSV. Esto puede ser muy útil cuando los datos en los que estamos trabajando vienen de esta manera y desean representarlos en forma tabular. Veamos un ejemplo.
Supongamos que nuestros datos de caracteres LOTR se representan como una lista de diccionarios (tal vez como se devolvería de una llamada de API realizada con el peticiones módulo). Esto es lo que podríamos escribir para crear un CSV basado en él:

#!/usr/bin/env python3 import csv caracteres_data = ['name': 'frodo', 'raza': 'hobbit', 'nombre': 'aragorn', 'raza': 'hombre', ' Nombre ':' Legolas ',' Race ':' Elf ', ' name ':' gimli ',' raza ':' dwarf '] if __name__ ==' __main__ ': con abierto (' Lotr.csv ',' w ') como csvfile: escritor = csv.DictWriter (CSVFile, FieldNames = ('Nombre', 'Race')) Escritor.WriteHeader () escritor.Writerows (caracteres_data) 
Copiar

Veamos lo que hicimos. Primero creamos una instancia del Presente clase, aprobando como argumentos el objeto de archivo (csvfile) y que nombres de campo, que debe ser una secuencia de valores que se utilizarán como nombres de campo CSV, y determina en qué orden los valores contenidos en cada diccionario deben escribirse en el archivo. Mientras que en el caso del DictTtreader Constructor de clase Este parámetro es opcional, aquí es obligatorio, y es fácil entender por qué.

Después de crear el escritor Objeto, llamamos a su WriteHeader Método: Este método se utiliza para crear la fila CSV inicial, que contiene los nombres de campo que pasamos en el constructor.

Finalmente, llamamos al escritor método para escribir todas las filas de CSV a la vez, pasando la lista de diccionarios como argumento (aquí las hacemos referencia por el caracteres_data variable). Todo listo!

Conclusiones

En este artículo aprendimos los conceptos básicos de leer y crear archivos CSV utilizando el lenguaje de programación de Python. Vimos cómo leer las filas de un archivo CSV como una lista de cadenas y en un diccionario usando un DictTtreader Objeto, y cómo crear un nuevo archivo CSV que escriba una fila en ese momento, o todas las filas a la vez. Finalmente, vimos cómo crear un archivo CSV a partir de una lista de diccionarios como se podría devolver desde una llamada API. Si quieres saber más sobre el CSV Módulo de Python por favor consulte la documentación oficial.

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Mastering Bash Script Loops
  • Bucles anidados en guiones Bash
  • Cosas para instalar en Ubuntu 20.04
  • Cómo manipular las hojas de cálculo de Excel con Python y ..
  • Cómo formatear datos con columna en Linux
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Manipulación de Big Data para la diversión y las ganancias Parte 1
  • Manipulación de Big Data para diversión y ganancias Parte 2
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux