本帖最后由 lycfaint 于 2014-7-31 17:12 编辑
刚入门python,之前没用过正则,所以在这个过程中出现了一堆错误,查了一堆资料。但是还是会出现错误,这篇文章就是把在实战过程中卡住很长时间的bug,这些bug或者可能知道结果的时候觉得很简单,但是在你没发现之前确实可以卡你好几个小时。(当然找到的那刹那也叫一个爽,相信遇到过的兄弟应该深有体会。)
错误一 卡了3个小时
正则表达式中'\d'用来匹配所有数字,其实只可以匹配一个数字。应该写成'\d+'
想要匹配的是:新闻有N条
写的正则为:新闻有\d条
正确的写法:新闻有\d+条
但是结果中有不止一个数字的,就导致了当只有一个数字时,会跑出结果,当不止一个数字时,就会报如下错误:
AttributeError:'NoneType' object has no attribute 'group'
得到收获:解决的过程是技术部的一个同事帮忙的,他在过程中加了好多个调试点,觉得这个是个很不错的做法,深刻学习。这个错误拿出来分享是因为,刚开始看那个错误提示,会以为没用好对象的属性(这类错误出的也不少,各种瞎倒腾也就好了),但是单独调用那个版块的时候就没有错(因为用的例子只是个位数的结果)。我这个bug里出现的问题,正则表达写错,一部分有结果,一部分编译后再search的结果集为空,就导致了none这个对象木有group这个方法,也就报错了。
下面是模块段加了测试的节点:
def num(address):
html=serprs.curl(address)
#print address(1)
pat=re.compile(r'抱歉未找到|新闻有\d+条')
#print pat(2)
#print html(3)
res=pat.search(html)
#print res(4)
return res.group()
错误二
算是两个小的错误吧,在折腾jieba分词的时候出现的,卡得不是很久,但是感觉挺奇葩的,记录下来分享给各位。
(1)jieba.load_userdict("figure.txt")
报错,说是编码没法解码
解决方法:将字典编码改为utf-8,就是txt另存为的时候,编码方式改为utf-8,实际原因不知道,上个图好了
(2)jieba分词中设置字典路径的问题:
jieba.load_userdict("d:\dict\\figure1.txt")
原来写的是:jieba.load_userdict("d:\dict\figure1.txt")
会被转译成别的意思,导致无法找到正确的字典,目前就知道f,不知道别的字母会不会变意思。
写在最后,除了这个之外,还可以看看《17个新手常见Python运行时错误》,我是在里面没有找到这个错误,才想写下这个的。这篇文章会不断更新自己出现过的卡的时间比较久的bug分享(尽自己可能去讲清楚,不清楚的留言喽,尽可能再解释一下)。也许高手看了会觉得这个错误很2逼,但是我觉得肯定还会有人遇到跟我一样悲剧的问题,所以这篇文章也就存在他的价值(自己是这么以为的) |