python中字符串及字符串的格式化
1、当字符串中有转义字符,但是你又不希望转义,则可以通过在字符串前加上字母r来告诉编译器不转义字符串中转义字符 例如: f = open('c:\newline\test.txt','wb') 这样会当成转义字符进行转义,如果在前面加上r就不会 f = open(r'c:\newline\test.txt','wb') 2、分片操作 L[i,j,k]从L的索引为i开始,直到索引为j,但是不包括j,每隔k位就取出,i的默认值是0,j的默认值是L的长度,k的默认值是1 当k为正数时,表示从i开始到j,不包括j,并且i<j 例如: L=[1,2,3,4,5] print(L[0:5]) #输出:1,2,3,4 print(L[slice(0,5)]) # 跟上面等效 print(L[:]) #输出:1,2,3,4,5 print(L[slice(None,None)]) #跟上面等效 print(L[:5:2]) #输出:1,3,5 print(L[slice(None,5,2)]) #跟上面等效 当k为负数时,表示从i开始,到j结束,不包括j,并且i>j 例如: L=[1,2,3,4,5] print(L[5,1,-1]) #输出5,4,3 L=[1,2,3,4,5] print(L[slice(5,1,-1)]) print(L[::-1]) #输出5,3,2,1 print(L[slice(None,None,-1)]) 3、int,str,repr能够将字符串转化为数字,也能够将数字转化为字符串。ord将字母转化为ascii,chr将数字转为字符 4、join将对象连接起来,split通过某些分隔符将对象分隔 5、字符串的格式化:%[name][flag][width][.precision]typecode 其中width.和precision可以用*代替,表示可以从输入项的下一个取值: 例如: print('kk%+*.*fw' % (8,4,125454564545453.454545456)) 6、利用字典进行格式化,利用字典的键查找值 print('%(x)d %(k)s'%{'x':45,'k':'how are you'}) 7、另外一种字符串格式化方法 例如: template = '{0},{moto},{food}' print(template.format('ham',moto='spam',food='egg')) 在这里利用位置,或者参数名字进行调用,如果确定用位置,则这个位置必须是不带名字的参数 例子 : import sys print('{1[spam]} runs {0.platform}'.format(sys,{'spam':'laptop'})) print('{config[spam]} runs {sys.platform}'.format(sys=sys,config={'spam':'laptop'})) 8、具体的格式化: 语法是{fieldname!conversionflag:formatspec} 其中fieldname可以是name或者index,conversionflag可以是r,s,a分别代表该值被repr,str,ascii内置函数的调用,formatspec在下面讨论 例如: a='a' print('{0!r}'.format(a)) print('{name!r}'.format(name='ad')) 下面讨论formatspec的形式如下: [[fill]align][sign][#][0][width][.precision][typecode] 其中fill表示当位数不够时,用什么填充,但是这个必须和对齐符号连起来使用。 例如:'#{0:¥<10}#'.format(124) #输出:'#124¥¥¥¥¥¥¥#' align表示对齐方式:<(左对齐),>(右对齐),=(具体使用我不清楚),^(居中对齐) 例如:'@{0:&<10}@'.format(123) #输出:'@123&&&&&&&@' 其中&是填充字符,<表示左对齐,10表示位数 其中.precision表示精度,typecode表示类型,比如说d,e,f 例如:'@{0:&<10.4f}@'.format(123.0) #输出:'@123.0000&&@' 9、在python2.6和python3.0中提供了一宗内置format函数有相同的功能 例如: '{0:.2f}'.format(12.3) 和format(12.3,'.2f') 10、格式化方法能够通过位置,键,属性引用和二进制类型代码 例如:'{0},{1:b},{name.path}'.format('hello',2,name=sys) #解释一下:第一个{0}是通过位置进行引用的,{name.path}通过键并且利用了其属性 当在%表达式中想用键查找其值的时候,后面必须是字典,例如:'%(name)s'%dict(name="lucy") 11、格式化方法也可不写位置,例如:'{:f} ,{:.2f},{:06.2f}'.format(3.14159,3.14159,3.14159) #输出:3.141590,3.14,003.14 12、注意一下区别: '%s'%1.23 #输出:1.23 '%s'%(1.23,) #输出:1.23 ’%s'%((1.23),) #输出:1.23 '{:.2f}'.format(1.2345) #输出:1.23 '{:.2f},{:d}'.format(1.2345,99) #输出:1.23,99 '{:f}'.format(1.2345) #输出:'1.234500' '{0}'.format((1.2345,)) #输出:'(1.2345,)' 13、不可变对象有:数字,字符串,元祖,不可变集合;可变对象有:列表,字典,可变集合