文件无法读取:UnicodeDecodeError

时间:2018-03-01 00:54:32

标签: python unicode encoding

我有一个'csv'文件,其中包含str,int和datetime列。当我使用pd.read_csv(file_name, encoding='utf-8')打开文件时,出现以下错误:

  

UnicodeDecodeError:'utf-8'编解码器无法将字节0xa5解码到位   109:无效的起始字节

我尝试使用下面的代码但是我得到了所有列的'str'类型结果,每个值用逗号分隔。

file = open(file_name, "r", encoding='utf-8', errors='ignore')
df = file.read()

如何将文件作为数据框读取或将上述代码的结果转换为数据框?

1 个答案:

答案 0 :(得分:0)

如果您收到UnicodeDecode错误,则数据不是UTF-8编码的。

您尚未提供任何示例数据,但要加载一个简单的文件,例如:

filename,integer,date
file,1,2018-02-02

这可用于获取除字符串以外的数据类型(免责声明,而不是熊猫专家(还)...只需阅读文档。可能有一种更简单的方法来解析日期):

>>> import pandas as pd
>>> from datetime import datetime
>>> a=pd.read_csv('out.csv',dtype={1:int},converters={2:lambda x:datetime.strptime(x,'%Y-%m-%d')})
>>> a
  filename  integer       date
0     file        1 2018-02-02
>>> a.dtypes
filename            object
integer              int32
date        datetime64[ns]
dtype: object