domingo, 1 de noviembre de 2020

Leer archivos CSV en Python (Solución al error 'UnicodeDecodeError: 'charmap' codec can't decode byte 0x81)

Cómo leer archivos CSV en Python

Para poder leer un archivo CSV en Python se puede ejecutar el siguiente código:

with open('archive/results.csv') as File:
    reader = csv.reader(File)
        for row in reader:
            print (row)

Para leer el valor de cada uno de los campos de cada fila, se accede a su contenido de la misma forma que se accede a los elementos de una lista. Por ejemplo, para acceder al primer elemento, se hace de la siguiente forma:

        row[0]

Usar Try - Except

A veces, puede ocurrir que algunos de los elementos contengan información errónea y esto nos puede provocar algún error si estamos tratanto archivos CSV de muchos elementos. Por ejemplo, podría ocurrir que un campo de nuestro archivo CSV almacene algún dato de tipo numérico y que, por error, en algún registro se haya guardado un nombre. Si estamos haciendole alguna operación a esos números, provocará un error cuando llegue el momento de aplicarle dicha operación al registro que contiene un nombre.

Leer CSV en Python

 

Por tanto, puede ser interesante utilizar bloques try - except para realizar el tratamiento de la información y capturar posibles errores sin que nuestra aplicación termine su ejecución con errores.

Solucionar el error 'UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position x: character maps to undefined'

El error suele venir provocado por la codificación que se esté utilizando. En mi caso, el error se ha solucionado añadiendo el tipo de codificación, utf-8 tal y como se muestra en la siguiente tabla:

with open('archive/results.csv', encoding='utf-8') as File:
    reader = csv.reader(File)
        for row in reader:
            print (row)

No hay comentarios:

Publicar un comentario