【PythonChallenge】Level 4

如题,是一个链表,N多数据,其中还有其它操作,比较麻烦,也是刚学python网络编程。对于Perl的RE很熟悉,还没有学python的,还是啃手册吧。
其中在读出16044时,并没有找到匹配项,如下图所示:

意思是除2,因此将8022作为参数,继续跑。又跑了段时间,跑到82682时,内容如下:
There maybe misleading numbers in the text. One example is 82683. Look only for the next nothing and the next nothing is 63579。
真是万恶啊。最开始没理解,以为是跑错了,才发现原来前面的数字是误导,因此使用re.search。或者直接将63579作为参数。最终得到结果:peak.html


程序如下:

from urllib.error import URLError, HTTPError
import urllib.request
import urllib.parse
import re

base = "http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="
tmp = "12345"
pattern = re.compile(r"\D+(\d+$)")

try:
    while True :
        url = base+tmp
        s = urllib.request.urlopen(url)
        code = s.read().decode('utf-8')
        s.close()
        nums = pattern.search(code);
        if nums == None:
            break
        else :
            tmp = nums.group(1)
            print (tmp)
            
except HTTPError as e:
    print ('Error Code: ', e.code)
except URLError as e:
    print ('Reason: ', e.reason)
    
print("Final word is ", code)
print(nums)

 

posted on 2014-03-04 23:22  Bombe  阅读(162)  评论(0编辑  收藏  举报

导航