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、不可变对象有:数字,字符串,元祖,不可变集合;可变对象有:列表,字典,可变集合

  

posted @ 2014-04-16 23:16  再不奋斗就会被淘汰  阅读(216)  评论(0编辑  收藏  举报