本文均来自Python Cookbook,本博文励志将Cookbook中的string部位,文件,面向对象编程部分完成,本系列博文陆续还会介绍flask框架,每篇博文都以一个个小例子展示。
#-*- coding: utf-8 -*- ''' 检查一个文本是字符串还是二进制 思想:如果字符串中包含了空值或者其中含有超过30%的字符 的高位被置1或是奇怪的控制码,我们就人为这段数据是二进制数据 ''' from __future__ import division import string #所有文本字符的集合 text_characters = "".join(map(chr,range(32,127))) + "\n\r\t\b" #空映射表 __null_trans = string.maketrans("","") def istext(s,text_characters=text_characters,threshold=0.30): #s包含空值就不是文本 if "\0" in s: return False #一个空的字符串是文本 if not s: return True #去除文本字符,查看文本字符和非文本字符的比例是否超过阀值 t = s.translate(__null_trans,text_characters) return len(t)/len(s) <= threshold ''' 大小写控制 upper() lower() capitalize() 首字符大写 title() 每一个单词的首字符大写 isupper() islower() istitle() ''' #iscapitalize的实现 import string notrans = string.maketrans('','') #判断str是否为空 def containsAny(str,strset): return len(strset) != len(strset.translate(notrans,str)) #判断str是否首字母大写,若为空也返回真 def iscapitalize(s): return s == s.capitalize() and containsAny(s,string.letters) ''' 列表推导 List = [operator for i in iterlist] iterlist是一个迭代器,每次迭代取出i并用于operator操纵记录结果, 最后每次迭代并进行operator形成结果列表 ''' List = [i*2 for i in "zhang"] print List #结果是:['zz', 'hh', 'aa', 'nn', 'gg'] ''' 字符串替换: ''' import string new_style = string.Template('this is $thing') print new_style.substitute({'thing':5}) print new_style.substitute({'thing':'test'}) print new_style.substitute(thing=5) print new_style.substitute(thing='test') #Template的高级用法 new_style = string.Template('this is $thing') thing = 100 print new_style.substitute(locals()) #结果是this is 100 ''' 绑定方法和非绑定方法 绑定方法: 1.如果一个python对象提供一个方法, 可以直接获得一个已经绑定到该对象的方法从而直接使用这个方法。 非绑定方法: 2.如果获得的是一个类型或者一个类提供的方法,则是非绑定方法, 需要提供该类型或者类的一个实列 ''' #绑定方法 test = ['1','2','3'] bangding = test.append bangding('4') print test #结果:['1', '2', '3', '4'] #非绑定方法 bangding = list.append test = ['1','2','3'] bangding(test,'4') print test #结果:['1', '2', '3', '4'] import codecs,sys sys.stdout = codecs.lookup('utf-8')[-1](sys.stdout) print u"你好"