Strategy for Python Challenge(03)

關卡地址:http://www.pythonchallenge.com/pc/def/equality.html
關卡是尋找兩邊都被三個大字母包圍的小字母。
代碼能夠參考上一小節的。
代碼以下:html

# -*- coding: UTF-8 -*-
import urllib.request
import re
import string

url = urllib.request.urlopen('http://www.pythonchallenge.com/pc/def/equality.html')
page = url.read().decode('utf8') # 在Python中urlopen返回的response是byte類,須要轉成string類
pattern = re.compile(r'<!--[^>]*?-->') #  註釋是在<!-- 和-->,這裏使用?是想最短匹配,不過好像不加也沒有影響
m = re.findall(pattern, page)
#print(m)
pattern = re.compile(r'(?<=[a-z][A-Z]{3})([a-z])(?=[A-Z]{3}[a-z])')
print(''.join(re.findall(pattern, ''.join(m))))

這段代碼主要是考察re正則表達式的使用,其中(?<=...)是前綴匹配,可是不捕獲,(?=...)是後綴匹配,也是不捕獲。
最後一段輸出代碼,有不少括號,不可取,這主要是因爲re.findall返回的序列[],要用''.join()來轉換成string輸出,或許有更好的方式來實現。python

相關文章
相關標籤/搜索