读取文件报错'utf-8' codec can't decode byte 0xb2 in position 49: invalid start byte

python open打开文件报错 ‘utf-8’ codec can’t decode byte 0xb2 in position 49: invalid start byte

解决方法:
1、操作字符为xb2
2、手动查看csv文件发现特殊字符
²?,OS,װ»?,»???¹?ì»??׃,ASW±໅,̹Ԑ²?ڵ䋽,½ڵ䆤׃,ȸԲ
3、分析报错字符编码


def all_encodings():
    modnames = set([modname for importer, modname, ispkg in pkgutil.walk_packages(
        path=[os.path.dirname(encodings.__file__)], prefix='')])
    aliases = set(encodings.aliases.aliases.values())
    return modnames.union(aliases)

text = b'\xb2'
for enc in all_encodings():
    try:
        msg = text.decode(enc)
    except Exception:
        continue
    if msg in '²?,OS,װ»?,»???¹?ì»??׃,ASW±໅,̹Ԑ²?ڵ䋽,½ڵ䆤׃,ȸԲ':
        print('Decoding {t} with {enc} is {m}'.format(t=text, enc=enc, m=msg))

输出如下

Decoding b'\xb2' with charmap is ²
Decoding b'\xb2' with koi8_t is ²
Decoding b'\xb2' with iso8859_13 is ²
Decoding b'\xb2' with raw_unicode_escape is ²
Decoding b'\xb2' with cp1253 is ²
Decoding b'\xb2' with iso8859_3 is ²
Decoding b'\xb2' with cp1258 is ²
Decoding b'\xb2' with iso8859_8 is ²
Decoding b'\xb2' with unicode_escape is ²
Decoding b'\xb2' with cp1252 is ²
Decoding b'\xb2' with iso8859_9 is ²

依次测试使用该编码打开文件

with open('filename.csv','r',encoding= 'charmap') as csvfile:
    print(csvfile)

问题解决

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值