【原创】pythonchalleng——第3题

        第三题的网址:http://www.pythonchallenge.com/pc/def/equality.html,如果大家访问不了该网站,可以看看下面的网站截图。

2011-07-16_231840

在本道题中,我们首先看一下下面的这句话:

One small letter, surrounded by EXACTLY three big bodyguards on each of its sides.

这句话的意思就是说一个小写字母的两侧各有3个大写字母,就像图中一个小蜡烛的左右各有3个大蜡烛。除了这句话外,本题没有任何提示了……这让我们很费解。考虑到上一题的部分提示,我们可能需要查看本页的html源代码去找找线索。果然不出我们所料,源代码中暗藏玄机。待处理文本如下

kAewtloYgcFQaJNhHVGxXDiQmzjfcpYbzxlWrVcqsmUbCunkfxZWDZjUZMiGqhRRiUvGmYmvnJIHEmbT
MUKLECKdCthezSYBpIElRnZugFAxDRtQPpyeCBgBfaRVvvguRXLvkAdLOeCKxsDUvBBCwdpMMWmuELeG
ENihrpCLhujoBqPRDPvfzcwadMMMbkmkzCCzoTPfbRlzBqMblmxTxNniNoCufprWXxgHZpldkoLCrHJq
vYuyJFCZtqXLhWiYzOXeglkzhVJIWmeUySGuFVmLTCyMshQtvZpPwuIbOHNoBauwvuJYCmqznOBgByPw
TDQheAbsaMLjTmAOKmNsLziVMenFxQdATQIjItwtyCHyeMwQTNxbbLXWZnGmDqHhXnLHfEyvzxMhSXzd
BEBaxeaPgQPttvqRvxHPEOUtIsttPDeeuGFgmDkKQcEYjuSuiGROGfYpzkQgvcCDBKrcYwHFlvPzDMEk
MyuPxvGtgSvWgrybKOnbEGhqHUXHhnyjFwSfTfaiWtAOMBZEScsOSumwPssjCPlLbLsPIGffDLpZzMKz
jarrjufhgxdrzywWosrblPRasvRUpZLaUbtDHGZQtvZOvHeVSTBHpitDllUljVvWrwvhpnVzeWVYhMP…

由于文本过多,我就不粘贴出来了,还是同第2题一样,将这些信息保存为文本文件3.txt中。根据上面的提示,我们基本可以理解题意:就是从这些文本信息中找到那些小写字母,它们的左右两侧各有3个大写字母

        明白题意后,我们发现这道题其实就是字符串匹配问题。但是如果各位要自己写函数处理这个问题的话。就相当于自己重新造个轮子,因为python中已经内置相应模块供我们来处理字符串匹配问题。大家不妨再看看第3题网页的标题,就是re。re是什么?就是python中的正则表达式模块。关于正则表达式的写法,大家可以简单看看《Python正则表达式操作指南》。代码如下:

''' 
Created on 2011-7-16 
@author: hengha 
''' 
# -*- coding: utf-8 -*- 
import re 
def getStr(fileUri): 
    text='' 
    f=open(fileUri) 
    line=f.readline() 
    while line: 
        text+=line 
        line=f.readline() 
    f.close() 
    return text 
def getRex(str): 
    p=re.compile(r'[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]') 
    result=p.findall(str) 
    url='' 
    for res in result: 
        url+=res[4] 
    return url 
if __name__ == '__main__': 
    print getRex(getStr('3.txt'))

我们使用的正则表达式是r'[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]',其中r的作用是不处理正则表达式中的反斜杠;[a-z]表示一个小写字母;[A-Z]表示一个大写字母;{3}表示重复3次。由于我们要确定小写字母两边只有3个大写字母,所以在构造正则表达式的时候,还要在大写字母的两侧再判断是否是小写字母。由于findall返回的是list,所以我们可以取出各个list中的小写字母,保存到url中,最后得到的结果是linkedlist

        好了,我们试一试讲网址中的equality替换为linkedlist,看看是否能进入下一题。出乎意料的是,我们看到的页面如下:

2011-07-16_234203

哦,这是在提示我们把html换成php试一试。按照新的提示,我们再次尝试,这次终于搞定了!成功进入第4题。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部