本文均来自Python Cookbook,本博文励志将Cookbook中的string部位,文件,面向对象编程部分完成,本系列博文陆续还会介绍flask框架,每篇博文都以一个个小例子展示。

#-*- coding: utf-8 -*-'''        reduce()函数有两个参数:        第一个参数:是一个函数,这个函数有两个参数        第二个参数:是一个列表        reduce()函数的过程是:调用函数并传入列表中的第一个数和第二个数,        并将结果和第三个参数再次传递给这个函数。依次类推。'''def Link(name1,name2):    return name1+name2+"|"print reduce(Link,"zhang")#zh|a|n|g|'''            字符串列表的连接成一个大字符串的方法:                方法一: 遍历字符串列表,使用+=连接                方法二: reduce(operator.add,字符串列表)                方法三: "".join(字符串列表)                这三种方法中第三种方法最优                前两种都会产生中间结果,第三种不需要产生中间结果,速度更快,性能更好'''resultString="";name=['zhang','test','wang']#方法一for i in name:    resultString+=iprint resultString#方法二import operatorprint reduce(operator.add,name)#方法三print "".join(name)#结果如下:#zhangtestwang#zhangtestwang#zhangtestwang'''        字符串反转'''#字符串反转teststring="zhang"revchars = teststring[::-1]print revchars#单词反转teststring="zhang wang loiu"revwords = teststring.split()revwords.reverse()revwords = ' '.join(revwords)print revwords'''        检查字符串中是否包含某字符集合中的字符        对于集合问题如果参数提供的是列表那么最好转换成集合来操做'''#方法一def containAny(seq,asets):    for c in seq:        if c in asets:            return True        else:            return False# 方法二import itertoolsdef containAny2(seq,asets):    for item in itertools.ifilter(asets.__contains__,seq):        return True    return Falseprint containAny2("zhang","www")print containAny("zhang","www")'''        字符串的translate和maketrans方法的使用        maketrans用于生成一个翻译表有两个参数:        第一个参数:一串字符        第二个参数:一串字符        maketrans将形成第一参数到第二个参数的一个映射        例如:        maketrans("zhang","wangs")        z-->w        h-->a        a-->n        n-->g        g-->s        translate的用法:        "string".translate(映射表,字符串)        首选从"string"中过滤掉第二个参数中的字符串,然后按照映射表进行映射'''#一个对maketrans和translate使用示列import stringmapstring  = string.maketrans('abc','ABC')fin = "zhang".translate(mapstring,"zhng")print fin#结果是A'''        什么是闭包?'''#闭包的使用示列def bibao(onenum):    num=20+onenum    def count(twonum):        return twonum+num    return counttest = bibao(50)print test(20)#结果是:90'''    过滤字符串中不属于指定集合的字符'''import string#无需翻译映射表allchars = string.maketrans('','')def makefilter(keep):    #获取要删除的字符,keep是要保留的字符,下面这段代码是取补集    delchars = allchars.translate(allchars,keep)    def thefilter(s):        return s.translate(allchars,delchars)    return thefilterif __name__ == '__main__':    test = makefilter('esf')    print test('zhang yzhangi fei')    #结果fe