就是我要爬一个页面的数据,这个页面是GBK的,但是里面会有人回复非GBK的帖子,比如“傘€傘€傘€傘€ ”,这样爬出来的字符如果要decode('gbk')的时候会报错
>>> new.decode('gbk') Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 1875: illegal multibyte sequence那怎么样才能过滤掉这些非GBK的字符呢??
decode('gbk','ignore')这个非常好使谢谢加上异常捕获,但是写个函数通吃大部分编码会更好一些
是这样的吗?
<preclass="brush:python;toolbar:true;auto-links:false;">defmdcode(str,encoding='utf-8'):ifisinstance(str,unicode):returnstr.encode(encoding)forcin('utf-8','gb18030','gbk','gb2312','utf-16'):try:ifencoding=='unicode':returnstr.decode(c)else:returnstr.decode(c).encode(encoding)except:passraise'Unknowncharset' 这个霸气啊~~版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。