Python Challenge lv3: re
題目鏈接: http://www.pythonchallenge.com/pc/def/equality.htmlOne small letter, surrounded by EXACTLY three big bodyguards on each of its sides. 何為big bodyguards? 我估計(jì)是大寫字母,即要求找到由三個(gè)大寫字母包圍著的小寫字母。事實(shí)上,題目要求的確如此。不過我在一開始的時(shí)候走了彎路:我把連續(xù)的七個(gè)字母全部都打印出來了(左邊三個(gè)大寫字母,中間一個(gè)小寫字母,右邊三個(gè)大寫字母),費(fèi)了半天才搞明白原來要求的只是中間的小寫字母。
另外注意EXACTLY 這個(gè)詞,即“當(dāng)且僅當(dāng)”左右兩邊均為“三”個(gè)大寫字母的pattern才算。
代碼到也簡單:
import re
if __name__ == '__main__':
finpath = 'fin.txt'
with open(finpath) as fin:
# translate text into a single string
text = ''.join([line.rstrip() for line in fin.read()])
pattern = re.compile(r'[^A-Z][A-Z]{3}([a-z])[A-Z]{3}[^A-Z]')
print(''.join(pattern.findall(text)))程序輸出:linkedlist
參考答案
posted on 2009-05-11 15:52 李現(xiàn)民 閱讀(584) 評(píng)論(0) 編輯 收藏 引用 所屬分類: python

