我使用的是Python版本3.5.3和Pandas版本0.20.1
我使用read_csv读取csv文件。我根据这个post使用一个文件指针(与使用_enablelegacywindowsfsencoding()的解决方案相比,我更喜欢这个)。下面的代码可以工作:
import pandas as pd
with open("C:/Desktop/folder/myfile.csv") as fp:
df=pd.read_csv(fp, sep=";", encoding ="latin")这确实起作用了。但是,当文件名中有像ä这样的特殊字符时,如下所示:
import pandas as pd
with open("C:/Desktop/folderÄ/myfile.csv") as fp:
df=pd.read_csv(fp, sep=";", encoding ="latin")Python显示一条错误消息:(unicode error) 'utf-8‘编解码器无法解码位置0的字节oxc4 :意外的数据结束。
我还试图在文件路径前添加一个'r‘,但是我得到了相同的错误消息,除了现在我得到了一个整数位置,这正是我的特殊字符在文件路径中的位置。
所以原因是文件路径名中的特殊字符。
(不是可以通过使用encoding="utf-8“或任何其他类似ISO-5589-1来解决的解码错误。为了绝对确定,我尝试了以下编码,总是得到相同的错误消息: utf-8,ISO-5589-1,cp1252)
发布于 2020-11-26 11:18:51
该错误指示您的源文件(不是数据文件)未采用UTF-8编码。在Python3中,源文件必须以UTF-8编码保存,或者必须使用特殊注释声明保存源文件的编码,例如在文件顶部使用#coding=Windows-1252。\xc4是Ä的Windows1252编码,也是西欧和美国Windows的默认编码,所以这是一个很好的猜测。理想情况下,以UTF-8格式重新保存源代码。
例如,如果源文件为Windows-1252编码,数据文件为GB2312编码(中文):
#coding=Windows-1252 # encoding of source file
import pandas as pd
with open('DÄTÄ.csv',encoding='gb2312') as f: # encoding of data file
data = pd.read_csv(f)请注意,源文件默认使用UTF-8编码,但open默认使用locale.getpreferredencoding(FALSE)返回的编码。由于操作系统和配置不同,因此最好在打开文件时始终指定编码。
发布于 2020-11-26 01:17:33
尝试使用unicode文件路径u'path/to/files',例如
import pandas as pd
with open(u'C:/Desktop/folderÄ/myfile.csv') as fp:
df=pd.read_csv(fp, sep=";", encoding ="latin")https://stackoverflow.com/questions/65008722
复制相似问题