码迷,mamicode.com
首页 > 其他好文 > 详细

字符串格式化format很牛B

时间:2016-08-14 17:55:13      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

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
float精度

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%
View Code

5.4 用,号还能用来做金额的千位分隔符。

技术分享
>>> {:,}.format(1234567890)
1,234,567,890
View Code

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) 
View Code

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))
杂技表演

 

字符串格式化format很牛B

标签:

原文地址:http://www.cnblogs.com/zwei0227/p/5770522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!