pandas的read_csv读入文件报错'utf-8' codec can't decode byte 0xc6 in position 3: invalid continuation byte

CSV文件读取难题破解
在使用pandas处理movielens影评数据集时,遇到特定csv文件无法读取的问题。通过修改文件名和利用成功读取的文件模板,成功解决了‘utf-8’编码错误。分享一种实用的解决方案。
部署运行你感兴趣的模型镜像
这也许不一定要通过改变编码的方式解决,说不定是跟csv文件的一些格式有关!!!
有人说程序是玄学,确实,那么复杂的计算机,程序,偶尔出点难解的小问题,应该也是可以谅解的吧!

我是在用pandas读取movielens的影评数据集时出现问题的。一共有4个csv文件,movies,link的读取正常,tags,ratings就出现了**‘utf-8’ codec can’t decode byte 0xc6 in position 3: invalid continuation byte报错,尝试百度的方法改变了编码,添加了delimeter = ','等都无果,于是进行了如下步骤然后成功了:
1.将可以成功打开的’movies.csv’文件复制一份,会自动命名为’movies-附件.csv’,并保存在当前目录下(为什么是’movies.csv’呢?因为它能够被成功读出来嘛!当然要像成功者靠拢了)!
2.打开’movies-附件.csv’和’ratings,csv’,将’ratings.csv’的内容复制到’movies-附件.csv’。点击关闭,会出现弹窗询问是否要保存不兼容的格式,点击否,保存副本。方便起见,将副本保存在桌面(名字仍为’movies-附件.csv’)。然后,查看桌面是否已存在此文件,存在了则再次点击关闭,仍然会出现上述弹窗,点击是退出。(网页版微信没有截图功能,手机拍图的,有点low,大家意思一下随便看看就好,希望可以帮助到有同样困惑的盆友们!)
在这里插入图片描述
3.用pandas读取movies-附件.csv即可得到ratings的内容。在这里,很奇怪的一点,同样的内容,文件名改为‘movies1.csv’等等都可以读取出来,但是包含ratings就报错了。深层原因也是非常不解!(show一下读出来后的效果) 在这里插入图片描述
4.顺藤摸瓜,发现,直接把‘ratings’文件名改为‘movies3’,也是可以读出来的。也就是说,报错是因为
csv文件的文件名**,改一改说不定就能读出来了。

您可能感兴趣的与本文相关的镜像

Yolo-v8.3

Yolo-v8.3

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

使用 Pandas 的 `read_csv()` 函数读取 CSV 文件时,如果出现类似如下错误: ``` UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc6 in position 0: invalid continuation byte ``` 这表明文件的编码格式不是 UTF-8,而 Pandas 默认尝试以 UTF-8 编码方式读取文件内容。以下是几种常见的解决方法: ### 指定正确的编码格式 可以通过指定 `encoding` 参数为实际文件使用的编码来解决这个问题。例如,许多 Windows 系统生成的文本文件使用的是 `'latin1'` 或 `'ISO-8859-1'` 编码[^1]。 ```python import pandas as pd df = pd.read_csv('your_file.csv', encoding='latin1') ``` 也可以尝试其他常见编码,如 `'cp1252'`: ```python df = pd.read_csv('your_file.csv', encoding='cp1252') ``` ### 使用 errors 参数忽略错误字符 如果不知道确切的编码格式,或者文件中存在一些非标准字符,可以使用 `errors='ignore'` 或 `errors='replace'` 来跳过或替换无法解码的字符[^2]。 ```python df = pd.read_csv('your_file.csv', encoding='utf-8', errors='ignore') ``` ### 自动检测编码格式 可以使用第三方库(如 `chardet`)来检测文件的实际编码格式[^3]。 ```python import chardet with open('your_file.csv', 'rb') as f: result = chardet.detect(f.read(10000)) # 读取前10KB进行检测 print(result['encoding']) # 输出检测到的编码 df = pd.read_csv('your_file.csv', encoding=result['encoding']) ``` ### 使用编辑器转换编码格式 如果希望继续使用 UTF-8 编码,可以使用文本编辑器(如 Visual Studio Code)打开文件,并将其保存为 UTF-8 编码格式[^4]。这种方法适用于一次性修改文件编码的情况。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值