编码风格使用4空格缩进,而非TAB。在小缩进(可以嵌套更深)和大缩进(更易读)之间,4空格是一个很好的折中。TAB引发了一些混乱,最好弃用。折行以确保其不会超过79个字符。这有助于小显示器用户阅读,也可以让大显示器能并排显示几个代码文件。使用空行分隔函数和类,以及函数中的大块代码。可能的话,注释独占一行。使用文档字符串。把空格放到操作符两边,以及逗号后面,但是括号里侧不加空格:a=f(1,2)+g(3,4)统一函数和类命名。总是用self作为方法的第一个参数。字符串利用三引号(’’’)或(”””)可以指示一个多行的字符串,在里面可以随便使用单引号和双引号。它也是文档字符串DocStringsdefdoc():'''HiHi'''passprintdoc.__doc__HiHi文档字符串第一行应该是关于对象用途的简介。如果文档字符串有多行,第二行应该空出来,与接下来的详细描述明确分离。转义符:'what\'sup'等价于what'sup\\表示反斜杠本身行末单独的一个\表示在下一行继续,而不是新的一行:'aaaaa\dddd'等价于'aaaaadddd'原始字符串r如果我们生成一个“原始”字符串,\n序列不会被转义,而且行尾的反斜杠,源码中的换行符,都成为字符串中的一部分数据。hello=rThisisaratherlongstringcontaining\n\serverallinesoftextmuchasyouwoulddoinC.printhelloThisisaratherlongstringcontaining\n\serverallinesoftextmuchasyouwoulddoinC.hello=Thisisaratherlongstringcontaining\n\serverallinesoftextmuchasyouwoulddoinC.printhelloThisisaratherlongstringcontainingserverallinesoftextmuchasyouwoulddoinC原始字符串的最后一个字符不能是“\”,如果想要让字符串以单“\”结尾,可以这样:printr'ee''\\'ee\如果是printr'ee\'则会返回错误;如果是printr'ee\\'则会返回ee\\字符串可以由+操作符连接,可以由*操作符重复。相邻的两个字符串文本自动连接在一起,它只用于两个字符串文本,不能用于字符串表达式。'str'.strip()'str''str''jkl''strjkl''str'.strip()'jkl'SyntaxError:invalidsyntax'str'.strip()+'jjj''strjjj'字符串不可变,向字符串文本的某一个索引赋值会引发错误。不过,组合文本内容生成一个新文本简单而高效。word='thank'word[0]'t'word[0]='f'Traceback(mostrecentcalllast):Filepyshell#10,line1,inmoduleword[0]='f'TypeError:'str'objectdoesnotsupportitemassignmentword[:4]+'g''thang'切片操作有个有用的不变性:i[:s]+i[s:]等于i。word[:4]+word[4:]'thank'值被转换为字符串的两种机制:str、reprstr函数:把值转换为合理形式的字符串repr:创建一个字符串,以合法的Python表达式的形式来表示值printrepr('hello,world!')'hello,world!'printstr('hello,world!')hello,world!printrepr('1000L')'1000L'printstr('1000L')1000Linput与raw_input:raw_input('e:')e:a'a'input('e:')e:aTraceback(mostrecentcalllast):Filepyshell#26,line1,inmoduleinput('e:')Filestring,line1,inmoduleNameError:name'a'isnotdefinedinput('e:')e:'a''a'a=raw_input('e:')e:123type(a)type'str'b=input('e:')e:123.01type(b)type'float'raw_input('e:')e:1+2'1+2'input('e:')e:1+23由上面的例子可以知道,两个函数均能接收字符串,区别是raw_input()直接读取控制台的输入(任何类型的输入它都可以接收),而input()在接收字符串的时候需要加上引号,否则会引发错误。此外,在接收纯数字方面,input()具有自己的特性,并不是像raw_input()一样把所有输入都当做字符串看待。除此之外,input()会接收合法的python表达式1+2返回int型的3。字符串大小写变换:lower()小写upper()大写swapcase()大小写互换capitalize()首字符大写title()只有首字符大写,其余为小写。用于转换字符串为标题:'that\'sall,folks'.title()That'SAll,Folksstring模块的capwords函数:importstringstring.capwords('that\'sall,folks')That'sAll,folks字符串在输出时候的对齐:ljust(width,[fillchar]):左对齐,输出width个字符,不足部分用filchar补足,默认的为空格。rjust(width,[fillchar]):右对齐。center(width,[fillchar]):中间对齐。zfill(width):把字符串变成width长,并在右对齐,不足部分用0补足。string.capwords('what\'sall,forks.').ljust(20)What'sAll,forks.string.capwords('what\'sall,forks.').rjust(20)What'sAll,forks.string.capwords('what\'sall,forks.').center(40)What'sAll,forks.string.capwords('what\'sall,forks.').zfill(20)000What'sAll,forks.字符串中的搜索和替换及其他常用方法:find(subsrt,[start,[end]]):返回字符串中第一个出现substr的第一个字母的标号,如果没有subser则返回-1。start和end的作用相当于在[start:end]中搜索。'srrrtripoopp'.find('trip',-1,-4)-1'srrrtripoopp'.find('trip')4index(subsrt,[start,[end]]):与find一样,只是在字符串中没有substr时,会返回一个运行时错误。rfind(subsrt,[start,[end]]):返回字符串中最后出现substr的第一个字母的标号,如果字符串中没有substr,返回-1.rindex(subsrt,[start,[end]])。count(subsrt,[start,[end]]):计算substr在字符串中出现的次数。replace(oldstr,newstr,[count]):把字符串中的oldstr替换为newstr,count为替换的次数。strip([char]):把字符串中前后有char的字符全部去掉,默认去掉空格:'aabb'.strip()'aabb''***aaa*bbb*!***'.strip('*')'aaa*bbb*!'当然还有lstrip([char])、rstrip([char]):'tsssssttt'.lstrip('t')'sssssttt''tsssssttt'.rstrip('t')'tsssss'join方法用来在队列中添加元素,但需要添加的队列元素都必须是字符串:seq=[1,2,3,4,5]sep='+'sep.join(seq)#连接数字列表Traceback(mostrecentcalllast):Filepyshell#38,line1,inmodulesep.join(seq)TypeError:sequenceitem0:expectedstring,intfoundseq=['1','2','3','4','5']#连接字符串列表sep.join(seq)'1+2+3+4+5'dirs='','usr','bin','eno''/'.join(dirs)'/usr/bin/eno'print'C:'+'\'.join(dirs)#注意\的转义问题SyntaxError:EOLwhilescanningstringliteralprint'C:'+'\\'.join(dirs)C:\usr\bin\enosplit方法用来将字符串分割成序列:'/usr/bin/env'.split('/')['','usr','bin','env']如果不提供任何分隔符,程序会把所有空格作为分隔符:'Usingthedefault'.split()['Using','the','default']translate方法也是替换字符串中的的某些部分,但只处理单个字符。它的优势在于可以同时进行多个替换,有些时候比replace效率高的多。使用translate转换之前,需要完成一张转换表,通过string模块里的maketrans函数完成。maketrans函数接受两个参数:两个等长的字符串,表示第一个字符串中的每个字符都用第二个字符串中的相同位置的字符替换:fromstringimportmaketranstable=maketrans('cs','kz')len(table)256#转换表是包含替换ASCⅡ字符集中256个字符的替换字符的字符串table[97:123]'abkdefghijklmnopqrztuvwxyz'translate的第二个参数是可选的,用来指定要删除的字符:'kzcddsdffg'.translate(table,'f')'kzkddzdg'字符串格式化:%操作符左侧放置一个需要格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都可以以%开始。如果需要在格式化字符串里面包括百分号,那么必须使用%%。%右边放置一个或者多个对象,这些对象将会插入到左边想进行格式化字符串的一个或者多个转换目标位置上。如果要格式化实数(浮点数),可以使用f说明符类型,同时提供所需要的精度:一个句点再加上希望所保留的小数位数。因为格式化说明符总是一表示类型的字符结束,所以精度应该放在类型字符前面:%.3f。基本的转化说明符:1.%字符:标记转换说明符的开始2.转换标志:-(减号)表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0补充3.最小字段宽度:转化后的字符串至少应该具有该值指定的宽度,如果是*,则宽度会从值元组中读出4.点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就是表示最大字段宽度