在windows下使用非idle的其他ide编辑器,会碰到这个问题。对抓取到的网页内容进行先解码再编码即可。
我们提供的服务有:成都网站设计、网站建设、微信公众号开发、网站优化、网站认证、天全ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的天全网站制作公司
以requests为例:
r = r.content.decode('gbk').encode('utf-8')
出现编码问题时,
1.仔细分析错误的类型。
看是decode(解码)错误还是encode(转码)错误。
2.搞清自己处理的字符串是什么类型的。
一般看网页的charset,一般为gbk,gb2312或gb18030.其中包含字符的大小为gb2312 gbk gb18030。一般出现‘gbk’ codec can’t decode,是因为
(1)要处理的字符串本身不是gbk编码,但是你却以gbk编码去解码
比如,字符串本身是utf-8的,但是你却用gbk去解码utf-8的字符串,所以结果不用说,则必然出错。
(2)处理的字符的确是gbk的,但是其中夹杂的部分特殊字符,是gbk编码中所没有的
如果有些特殊字符是GB18030中有的,但是是gbk中没有的。
则用gbk去解码,去所不支持的字符,也比如会出错。
所以,此种情况,可以尝试用和当前编码(gbk)所兼容的但所包含字符更多的编码(gb18030)去解码,或许就可以了。
3.然后换用这种的字符编码去编码或解码。
详情链接:
正则表达式的元字符?,有两种用法。
第一种,表示前面的项是可选项,可有可无,就是匹配零到一次。
第二种,用在花括号后面,表示非贪心匹配。
当?用在花括号后面时,就不是第一种意义。不是表示花括号可有可无,而是表示非贪心匹配。
例1:
以下的正则表达式匹配one和done
例2:
?前面也可以是圆括号界定的项。
例3:
在字符串'HaHaHaHaHa1中,因为(Ha){3,5}可以匹配3个、4个或5个实例,Match对象的group()调用会返回'HaHaHaHaHa',而不是更短的可能结果。毕 竟,'HaHaHa'和'HaHaHaHa'也能够有效地匹配正则表达式(Ha){3,5}。
Python的正则表达式默认是“贪心”的,这表示在有二义的情况下,它们会尽可能匹配最长的字符串。花括号的“非贪心”版本匹配尽可能最短的字符串,即在结束的花括号后跟着一个问号。
def __init__(self, root: TreeNode):
等效于
def __init__(self, root):
: TreeNode只是对root参数的说明。
python 是弱类型语言,解释器不会对root传入的数据类型做限制,但你的这个类,是希望创建实例,传入的是TreeNode类对象,所以通过这种方式来提醒引用者。
函数,循环,if条件,类定义等后面有block,block要缩进,因此这些语句后面要加上冒号,这是python的语法 python的冒号和java、c中的{}是一样的 block是一组语句