tablas para manejo leer importar funciones datos crear con archivos archivo abrir python csv pandas unicode

para - UnicodeDecodeError al leer el archivo CSV en pandas con Python



leer archivos csv en python (3)

Luchando con esto por un tiempo y pensé que publicaría en esta pregunta ya que es el primer resultado de búsqueda. Agregando la etiqueta encoding = ''iso-8859-1'' a pandas read_csv no funcionó, ni ninguna otra codificación, siguió dando un UnicodeDecodeError.

Si está pasando un manejador de archivo a pd.read_csv (), debe poner el atributo encoding = en el archivo abierto, no en read_csv. Obvio en retrospectiva, pero un error sutil para rastrear.

Estoy ejecutando un programa que procesa 30,000 archivos similares. Un número aleatorio de ellos se detiene y produce este error ...

File "C:/Importer/src/dfman/importer.py", line 26, in import_chr data = pd.read_csv(filepath, names=fields) File "C:/Python33/lib/site-packages/pandas/io/parsers.py", line 400, in parser_f return _read(filepath_or_buffer, kwds) File "C:/Python33/lib/site-packages/pandas/io/parsers.py", line 205, in _read return parser.read() File "C:/Python33/lib/site-packages/pandas/io/parsers.py", line 608, in read ret = self._engine.read(nrows) File "C:/Python33/lib/site-packages/pandas/io/parsers.py", line 1028, in read data = self._reader.read(nrows) File "parser.pyx", line 706, in pandas.parser.TextReader.read (pandas/parser.c:6745) File "parser.pyx", line 728, in pandas.parser.TextReader._read_low_memory (pandas/parser.c:6964) File "parser.pyx", line 804, in pandas.parser.TextReader._read_rows (pandas/parser.c:7780) File "parser.pyx", line 890, in pandas.parser.TextReader._convert_column_data (pandas/parser.c:8793) File "parser.pyx", line 950, in pandas.parser.TextReader._convert_tokens (pandas/parser.c:9484) File "parser.pyx", line 1026, in pandas.parser.TextReader._convert_with_dtype (pandas/parser.c:10642) File "parser.pyx", line 1046, in pandas.parser.TextReader._string_convert (pandas/parser.c:10853) File "parser.pyx", line 1278, in pandas.parser._string_box_utf8 (pandas/parser.c:15657) UnicodeDecodeError: ''utf-8'' codec can''t decode byte 0xda in position 6: invalid continuation byte

La fuente / creación de estos archivos provienen del mismo lugar. ¿Cuál es la mejor manera de corregir esto para proceder con la importación?


read_csv toma una opción de encoding para tratar con archivos en diferentes formatos. Uso principalmente read_csv(''file'', encoding = "ISO-8859-1") , o alternativamente encoding = "utf8" para leer, y generalmente utf-8 para to_csv .

También puede usar el alias ''latin1'' lugar de ''ISO-8859-1'' .

Consulte la documentación relevante de Pandas , python pone ejemplos en archivos csv y muchas preguntas relacionadas aquí en SO.


La más simple de todas las soluciones:

  • Abra el archivo csv en el editor de texto Sublime .
  • Guarde el archivo en formato utf-8.

En sublime, haga clic en Archivo -> Guardar con codificación -> UTF-8

Luego, puedes leer tu archivo como de costumbre:

import pandas as pd data = pd.read_csv(''file_name.csv'', encoding=''utf-8'')

EDIT 1:

Si hay muchos archivos, puede omitir el paso sublime.

Solo lea el archivo usando

data = pd.read_csv(''file_name.csv'', encoding=''utf-8'')

y los otros tipos de codificación diferentes son:

encoding = "cp1252" encoding = "ISO-8859-1"