Leer desde Python un archivo csv creado en excel

miércoles, 29 de junio de 2011

Tengo Windows XP en inglés y al guardar un .csv con Excel me lo guarda en la codificación ANSI, y para los procesos de mi script necesito que esté en UTF8, así que solo es cuestión de decodificar la entrada del archivo y codificarla en UTF8

Les dejo el código de las dos funciones que usé para realizar el procedimiento.
read_csv devuelve una lista con las filas del archivo.
ansi_csv_reader se encarga de la conversión ANSI a UTF8 celda por celda.



def read_csv(rutaArchivo):
"""Lee el contenido de un archivo CSV y lo devuelve en una lista"""
reader = ansi_csv_reader(open(rutaArchivo, 'rb'),dialect=csv.excel)
fileContent = []
for row in reader:
fileContent.append(row)
return fileContent

def ansi_csv_reader(ansi_data, dialect, **kwargs):
"""Decodifica la entrada del archivo en ANSI y la codifica en UTF-8"""
csv_reader = csv.reader(ansi_data, dialect=dialect, **kwargs)
for row in csv_reader:
yield [cell.decode('windows-1252').encode('utf-8') for cell in row]



Espero les sirva de algo :)

0 comentarios: