使用 Python 在 Pandas 中读取 CSV 文件时出现 UnicodeDecodeError

新手上路,请多包涵

我正在运行一个正在处理 30,000 个类似文件的程序。他们中的一个随机数正在停止并产生这个错误……

 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

这些文件的来源/创建都来自同一个地方。纠正此问题以继续导入的最佳方法是什么?

原文由 TravisVOX 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

read_csv 采用 encoding 选项来处理不同格式的文件。我主要使用 read_csv('file', encoding = "ISO-8859-1")encoding = "utf-8" 进行阅读,通常 utf-8 用于 to_csv

You can also use one of several alias options like 'latin' or 'cp1252' (Windows) instead of 'ISO-8859-1' (see python docs , also for您可能会遇到许多其他编码)。

请参阅 相关的 Pandas 文档csv 文件上的 python 文档示例,以及关于 SO 的大量相关问题。一个好的背景资源是 每个开发人员都应该知道的关于 unicode 和字符集 的知识。

要检测编码(假设文件包含非 ascii 字符),您可以使用 enca (参见 手册页)或 file -i (linux) 或 file -I osx)(参见 手册页)。

原文由 Stefan 发布,翻译遵循 CC BY-SA 4.0 许可协议

所有解决方案中最简单的:

 import pandas as pd
df = pd.read_csv('file_name.csv', engine='python')

替代解决方案:

崇高的文字:

  • Sublime 文本编辑器VS Code 中打开 csv 文件。
  • 以 utf-8 格式保存文件。
  • 在 sublime 中,点击 File -> Save with encoding -> UTF-8

VS代码:

在 VSCode 的底部栏中,您会看到标签 UTF-8。点击它。弹出窗口打开。单击使用编码保存。您现在可以为该文件选择一个新的编码。

然后,您可以像往常一样阅读您的文件:

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

其他不同的编码类型是:

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

原文由 Gil Baggio 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏