博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 处理中文网页时,忽略特殊字符,忽略异常
阅读量:5292 次
发布时间:2019-06-14

本文共 885 字,大约阅读时间需要 2 分钟。

中文网页大部分是gb2312编码的,在用python 处理时候最好转换成unicode的,怎么转换呢?

比如:

          html = open('http://www.baidu.com')

          这时html是字节流,咱应该转换成字符流,转换成unicode编码:

          html = html.decode('gb2312')

          html = html.decode('gb18030')

          这两个编码,最好用gb18030或者gbk,因为这两编码位数足够大,有时候这么转换了还会报错:'gb18030' codec can't decode bytes in position 10332-10333: illegal multibyte sequence

          这是应为在转编码的时候decode碰见了特殊字符,转换不了——尤其是在某些用C/C++编写的程序中,全角空格往往有多种不同的实现方式,比 如\xa3\xa0,或者\xa4\x57,这 些字符,看起来都是全角空格,但它们并不是“合法”的全角空格(真正的全角空格是\xa1\xa1),因此在转码的过程中出现了异常。

          那怎么解决呢?可以这样 html = html.decode('gb18030', 'ignore')在转编码时忽略错误

          特别注意:

                  在处理中文网页时候,当你用decode、encode时候,最好都加上'ignore'忽略特殊字符

 

s.decode('gbk', ‘ignore').encode('utf-8′) 

因为decode的函数原型是decode([encoding], [errors='strict']),可以用第二个参数控制错误处理的策略,默认的参数就是strict,代表遇到非法字符时抛出异常; 
如果设置为ignore,则会忽略非法字符; 
如果设置为replace,则会用?取代非法字符; 
如果设置为xmlcharrefreplace,则使用XML的字符引用。

转载于:https://www.cnblogs.com/lvxiuquan/archive/2012/08/07/2626707.html

你可能感兴趣的文章
列出man手册所有函数的方法
查看>>
[从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)【转】
查看>>
VisualStudio 常用快捷键-整理
查看>>
netty研究【1】:编译源代码
查看>>
GTK接口定义和实现
查看>>
Hadoop生态系统介绍
查看>>
uva 11468 Substring
查看>>
SoapUI、Jmeter、Postman三种接口测试工具的比较分析
查看>>
Android平台实现与Apache Tomcat服务器数据交互(MySql数据库)
查看>>
Cout vs printf---缓存与引用,流处理顺序(转ithzhang,知乎郝译钧)
查看>>
排座椅(seat)
查看>>
XOR Queries
查看>>
MSIL学习------从HelloWorld开始
查看>>
bzoj千题计划138:bzoj1432: [ZJOI2009]Function
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
BootStrap2学习日记2--将固定布局换成响应式布局
查看>>
实现自己的脚本语言ngscript之四:代码生成
查看>>
在Android中使用FlatBuffers(上篇)
查看>>
.net 基础面试题二
查看>>
leetcode 347. Top K Frequent Elements
查看>>