UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 5098-5099: invalid continuatio byte

问题描述

读取数据集(.csv格式)时遇到如下错误:
UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 5098-5099: invalid continuation byte

文本中包含中文和英文,使用utf-8格式在vs code中打开显示正常,使用Excel打开会有乱码
在这里插入图片描述
在这里插入图片描述

问题原因

UTF-8 character set, one Chinese word accounts for three bytes, GBK character set, one Chinese character accounts for two bytes
出处

数据集是中英混合的,并且在中文语句之间存在一些字符,例如:<br /> <b> </b> <p>

举个列子,其中一段内容如下:

相逢是缘,希望您及您的朋友或家人在悉尼最美丽的塔尔玛塔河畔渡过一个美好假期�?br />房子�?7年装修完毕的新房,位置极优,品质高尚,设备齐全,交
通极为便利,公寓所有步道均平坦无障碍。,下楼五十米有车站,码头,徒步12分钟到火车站。距风景如画的奥林匹克水上公园徒步三分钟,这里夜晚十分宁
静,微微的涛声助您进入甜蜜梦乡�?Auburn,-33.825,151.07836,Entire home/apt,3,1.5 baths,1,“[”“Patio or balcony”“, ““Garden or backyard””, ““Lockbox””, ““Bed linens””, ““Cleaning before checkout””, ““Shampoo””, ““Coffee maker””, ““Hair dryer””, ““TV””, ““Heating””, ““Washer””, ““Ir””, ““Private entrance””, ““Waterfront””, ““Kitchen””, ““Elevator””, ““Refrigerator””, ““Dishwasher””, ““Carbon monoxide alarm””, ““Oven””, ““Stove””, ““Long term stays allowed””, ““Microwave””, ““Ethernet connection””, ““BBQ grill””, ““Hot water””, ““Air conditioning””, ““Dryer””, ““Dedicated workspace””, ““Dishes and silverware””, ““Hangers””, ““Wifi””, ““Smoke alarm””]”,10,92,10,9,10,10,f,1,

上面这段话使用字符读入的结果是:

b’\xe7\x9b\xb8\xe9\x80\xa2\xe6\x98\xaf\xe7\xbc\x98\xef\xbc\x8c\xe5\xb8\x8c\xe6\x9c\x9b\xe6\x82\xa8\xe5\x8f\x8a\xe6\x82\xa8\xe7\x9a\x84\xe6\x9c\x8b\xe5\x8f\x8b\xe6\x88\x96\xe5\xae\xb6\xe4\xba\xba\xe5\x9c\xa8\xe6\x82\x89\xe5\xb0\xbc\xe6\x9c\x80\xe7\xbe\x8e\xe4\xb8\xbd\xe7\x9a\x845\xbd\xe5\x81\x87\xe6\x9c\x9f\xe3\x80?br />\xe6\x88\xbf\xe5\xad\x90\xe6\x98?7\xe5\xb9\xb4\xe8\xa3\x85\xe4\xbf\xae\xe5\xae\x8c\xe6\xaf\x95\xe7\x9a\x84\xe6\x96\xb0\xe6\x88\xbf\xef\xbc\x8c\xe4\xbd\x8d\xe7\xbd\xae\xe6\x9e\x81\xe4\xbc\x98\xef\xbc\x8c\xe5\x93\x81\xe8\xb4\xa8\xe9\xab\x98\xe5\xb0\x9a\xef\xbc\x8c\xe8\xae\xbe\xe5\xa4\x87\xe9\xbd\x90\xe5\x85\xa8\xef\xbc\x8c\xe4\xba\xa4\xe9\x80\x9a\xe6\x9e\x81\xe4\xb8\xba\xe4\xbe\xbf\xe5\x88\xa9\xef\xbc\x8c\xe5\x85\xac\xe5\xaf\x93\xe6\x89\x80\xe6\x9c\x89\xe6\xad\xa5\xe9\x81\x93\xe5\x9d\x87\xe5\xb9\xb3\xe5\x9d\xa6\xe6\x97\xa0\xe9\x9a\x9c\xe7\xa2\x8d\xe3\x80\x82\xef\xbc\x8c\xe4\xb8\x8b\xe6\xa5\xbc\xe4\xba\x94\xe5\x8d\x81\xe7\xb1\xb3\xe6\x9c\x89\xe8\xbd\xa6\xe7\xab\x99\xef\xbc\x8c\xe7\xa0\x81\xe5\xa4\xb4\xef\xbc\x8c\xe5\xbe\x92\xe6\xad\xa512\xe5\x88\x86\xe9\x92\x9f\xe5\x88\xb0\xe7\x81\xab\xe8\xbd\xa6\xe7\xab\x99\xe3\x80\x82\xe8\xb7\x9d\xe9\xa3\x8e\xe6\x99\xaf\xe5\xa6\x82\xe7\x94\xbb\xe7\x9a\x84\xe5\xa5\xa5\xe6\x9e\x97\xe5\x8c\xb9\xe5\x85\x8b\xe6\xb0\xb4\xe4\xb8\x8a\xe5\x85\xac\xe5\x9b\xad\xe5\xbe\x92\xe6\xad\xa5\xe4\xb8\x89\xe5\x88\x86\xe9\x92\x9f\xef\xbc\x8c\xe8\xbf\x99\xe9\x87\x8c\xe5\xa4\x9c\xe6\x99\x9a\xe5\x8d\x81\xe5\x88\x86\xe5\xae\x81\xe9\x9d\x99\xef\xbc\x8c\xe5\xbe\xae\xe5\xbe\xae\xe7\x9a\x84\xe6\xb6\x9b\xe5\xa3\xb0\xe5\x8a\xa9\xe6\x82\xa8\xe8\xbf\x9b\xe5\x85\xa5\xe7\x94\x9c\xe8\x9c\x9c\xe6\xa2\xa6\xe4\xb9\xa1\xe3\x80?Auburn,-33.825,151.07836,Entire home/apt,3,1.5 baths,1,“[”“Patio or balcony”“, ““Garden or backyard””, ““Lockbox””, ““Bed linens””, ““Cleaning before checkout””, ““Shampoo””, ““Coffee maker””, ““Hair dryer””, ““TV””, ““Heating””, ““Washer””, ““Iron””, ““Free parking on premises””, ““Luggage dropoff allowed””, ““Essentials””, ““Lake access””, ““Paid parking off premises””, ““Cable TV””, ““Private entrance””, ““Waterfront””, ““Kitchen””, ““Elevator””, ““Refrigerator””, ““Dishwasher””, ““Carbon monoxide alarm””, ““Oven””, ““Stove””, ““Long term stays allowed””, ““Microwave””, ““Ethernet connection””, ““BBQ grill””, ““Hot water””, ““Air conditioning””, ““Dryer””, ““Dedicated workspace””, ““Dishes and silverware””, ““Hangers””, ““Wifi””, ““Smoke alarm””]”,10,92,10,9,10,10,f,1,\r\n’

单纯的使用如下语句将上面的bytes转化成str输出会报错:

print(bytes.decode('utf-8'))

UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 111-112: invalid continuation byte

print(bytes[111:114])

输出:

b'\xe3\x80?'

我猜测是因为存在类似\x80?这样的字符,导致在进行字符集匹配的过程中发生了错位,所以无法正确识别出对应的字符,也就是错误提示中的invalid continuation byte,因为错位,所以两个连续的byte并不对应任何字符。

我的解决方法

使用编辑器ctrl+R快捷键替换掉文本中的类似于�?br />的字符
最后可以顺利读入数据集,展示如下:

相逢是缘,希望您及您的朋友或家人在悉尼最美丽的塔尔玛塔河畔渡过一个美好假期 房子 7年装修完毕的新房,位置极优,品质高尚,设备齐全,交通极为便
利,公寓所有步道均平坦无障碍。,下楼五十米有车站,码头,徒步12分钟到火车站。距风景如画的奥林匹克水上公园徒步三分钟,这里夜晚十分宁静,微微
的涛声助您进入甜蜜梦乡 Auburn,-33.825,151.07836,Entire home/apt,3,1.5 baths,1,“[”“Patio or balcony”“, ““Garden or backyard””, ““Lockbox””,
““Bed linens””, ““Cleaning before checkout””, ““Shampoo””, ““Coffee maker””, ““Hair dryer””, ““TV””, ““Heating””, ““Washer””, ““Iron””, ““Free parking on premises””, ““Luggage dropoff allowed””, ““Essentials””, ““Lake access””, ““Paid parking off premises””, ““Cable TV””, ““Private entrance””, ““Waterfront””, ““Kitchen””, ““Elevator””, ““Refrigerator””, ““Dishwasher””, ““Carbon monoxide alarm””, ““Oven””, ““Stove””, ““Long term stays allowed””, ““Microwave””, ““Ethernet connection””, ““BBQ grill””, ““Hot water””, ““Air conditioning””, ““Dryer””, ““Dedicated workspace””, ““Dishes and silverware””, ““Hangers””, ““Wifi””, ““Smoke alarm””]”,10,92,10,9,10,10,f,1,

尝试过的其他解决方法

  1. 方法一:使用charset
    参考真正解决Windows下UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xff in position 0错误的方法
    上文的解释很详细,但仍然报错:

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xf0 in position 235: ordinal not in range(128)

根据报错内容,我的中英文混合的数据集被认为是ascii码的编码方式。

  1. 方法二:使用latin-1的encoding
    参考UnicodeDecodeError, invalid continuation byte
pd.read_csv('File_name.csv',encoding='latin-1')

虽然不报错了,但是读入的都是乱码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值