标签:
python的format方法可谓相当强大,它可以接受不限个参数。。。
1.通过位置来格式化字符串,注意format传入的参数的位置要正确{0}对应第1个参数,{1}对应第2个参数...
1 >>> ‘{0},{1}‘.format(‘kzc‘,18) 2 ‘kzc,18‘ 3 >>> ‘{},{}‘.format(‘kzc‘,18) 4 ‘kzc,18‘ 5 >>> ‘{1},{0},{1}‘.format(‘kzc‘,18) 6 ‘18,kzc,18‘ 7 >>>
2.通过关键字参数,这样就可以不关心顺序问题,通过关键字传入值
1 >>> ‘{name},{age}‘.format(age=18,name=‘kzc‘) 2 ‘kzc,18‘
3.上面的通过关键字实现很像字典的key和value形式,那么能不能通过字典来格式化字符串呢?
1 dic = {‘ss‘:‘zhang‘,‘dd‘:20} 2 name = "i am {ss} ,age {dd}" name.format(ss=dic[‘ss‘],dd=dic[‘dd‘])
1 dic = {‘ss‘:‘zhang‘,‘dd‘:20} 2 name = "i am {ss} ,age {dd}" 3 name.format(**dic)
4.既然format可以接受字典参数,列表也当然可以了。你的想法强大python就有多强大。。。
li=[‘awill‘,22] name = "i am {0} , age {1}" name.format(li[0],li[1])
1 li=[‘awill‘,22] 2 name = "i am {0} , age {1}" 3 name.format(*li)
1 li=[‘awill‘,22] 2 name = "i am {0[0]} , age {0[1]}" 3 name.format(li)
5.格式限定符
它有着丰富的的“格式限定符”(语法是{}中带:号)
5.1 填充与对齐:
填充常跟对齐一起使用, ^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
1 >>> ‘{:>8}‘.format(‘189‘) 2 ‘ 189‘ 3 >>> ‘{:0<15}‘.format(‘awill‘) 4 ‘awill0000000000‘ 5 >>> ‘{:*^20}‘.format(‘awill‘) 6 ‘*******awill********‘
5.2 精度与类型f:
精度常跟类型f一起使用
如下:2表示长度为2的精度,f表示float类型。
1 >>> ‘{:.2f}‘.format(321.33545)#四舍五入 2 ‘321.34‘
5.3 其他类型
格式化指示符可以包含一个展示类型来控制格式。
展示类型有很多:
‘b‘ - 二进制。将数字以2为基数进行输出。
‘c‘ - 字符。在打印之前将整数转换成对应的Unicode字符串。
‘d‘ - 十进制整数。将数字以10为基数进行输出。
‘o‘ - 八进制。将数字以8为基数进行输出。
‘x‘ - 十六进制。将数字以16为基数进行输出,9以上的位数用小写字母。
‘e‘ - 幂符号。用科学计数法打印数字。用‘e‘表示幂。
‘g‘ - 一般格式。将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
‘n‘ - 数字。当值为整数时和‘d‘相同,值为浮点数时和‘g‘相同。不同的是它会根据区域设置插入数字分隔符。
‘%‘ - 百分数。将数值乘以100然后以fixed-point(‘f‘)格式打印,值后面会有一个百分号。
1 >>> ‘{:b}‘.format(15) 2 ‘1111‘ 3 >>> type(‘{:b}‘.format(15)) 4 <class ‘str‘> 5 >>> ‘{:d}‘.format(15) 6 ‘15‘ 7 >>> ‘{:c}‘.format(15) 8 ‘\x0f‘ 9 >>> ‘{:c}‘.format(65) 10 ‘A‘ 11 >>> ‘{:o}‘.format(15) 12 ‘17‘ 13 >>> ‘{:x}‘.format(15) 14 ‘f‘ 15 >>> ‘{:e}‘.format(15) 16 ‘1.500000e+01‘ 17 >>> ‘{:g}‘.format(15) 18 ‘15‘ 19 >>> type(‘{:g}‘.format(15)) 20 <class ‘str‘> 21 >>> ‘{:g}‘.format(15000000000000) 22 ‘1.5e+13‘ 23 >>> ‘{:n}‘.format(15000000000000) 24 ‘15000000000000‘ 25 >>> ‘{:n}‘.format(15.00234342) 26 ‘15.0023‘ 27 >>> ‘{:g}‘.format(15.00234342) 28 ‘15.0023‘ 29 >>> ‘{:%}‘.format(0.234342) 30 ‘23.434200%‘
5.4 用,号还能用来做金额的千位分隔符。
>>> ‘{:,}‘.format(1234567890) ‘1,234,567,890‘
6.通过对象属性
1 class Person: 2 def __init__(self,name,age): 3 self.name,self.age = name,age 4 def __str__(self): 5 return ‘This guy is {self.name},is {self.age} old‘.format(self=self)
7.一些其他用法
1 >>> print(‘{0:*>20}‘.format(‘awill‘)) 2 ***************awill 3 >>> print(‘{0:4.2f}‘.format(1.1415926)) 4 1.14 5 >>> print(format(1.1415926,‘<10.2f‘)) 6 1.14 7 >>> print(‘{0:<10},{1:0<15}‘.format(‘awill‘,1.1415926)) 8 awill ,1.1415926000000 9 10 #输入形式的控制format 11 a = int(raw_input(‘a:‘)) 12 b = int(raw_input(‘b:‘)) 13 print(‘%*.*f‘ % (a, b, 1.1415926))#a对应第一个*,代表输出长度;b代表第二个*,代表输出小数位数 14 print( ‘%6.3f‘ % (1.1415926))#输出长度为6,小数位数是3(末位四舍五入) 15 16 print({array[2]}‘.format(array=range(10))) 17 print({attr.__class__}‘.format(attr=2.4)) 18 print ({digit:*^ 10.5f}‘.format(digit=1.0/3))
标签:
原文地址:http://www.cnblogs.com/zwei0227/p/5770522.html