python成长之路4——字符串格式化

字符串的拼接有两种方式:
(1)万恶的连接符   
万恶的连接符(+):
    每次连接都会开辟一个新的内存空间(原内存空间程序不会删除,解释器有回收机制,发现没有人调用此内存空间即会回收)
    eg:a=b+c+d 会开辟3个内存空间
万恶的连接符
(2)字符串格式化

格式符

格式符为真实值预留位置,并控制显示的格式。格式符可以包含有一个类型码,用以控制显示的类型

%[(name)][flags][width].[precision]typecode

(name)为命名

flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。

width表示显示宽度

precision表示小数点后精度

%s    字符串 (采用str()的显示)

%r    字符串 (采用repr()的显示)

%c    单个字符

%b    二进制整数

%d    十进制整数

%i    十进制整数

%o    八进制整数

%x    十六进制整数

%e    指数 (基底写为e)

%E    指数 (基底写为E)

%f    浮点数

%F    浮点数,与上相同

%g    指数(e)或浮点数 (根据显示长度)

%G    指数(E)或浮点数 (根据显示长度)

%%    字符"%"
格式符

常用的格式符有%s和%d

 1 #%[(name)][flags][width].[precision]typecode
 2 t1="i am %(name)s,age is %(age)d" % {"name":"zy","age":19}
 3 print(t1)
 4 t2="percent %.2f" % 99.12345
 5 print(t2)
 6 t3="percent %(pp).3f" % {"pp":123.45678}
 7 print(t3)
 8 t4="%.2f%%" % 30.123
 9 print(t4)
10 
11 执行结果:
12 i am zy,age is 19
13 percent 99.12
14 percent 123.457
15 30.12%
16 
17 #format
18 p1="i am {},age {},No.{}".format("zy",18,"01")
19 print(p1)
20 p2="i am {},age {},No.{}".format(*["zy",18,"01"])
21 print(p2)
22 p3="i am {0},age {1},real {0}".format("zy",10)
23 print(p3)
24 p4="i am {0},age {1},real {0}".format(*["zy",10])
25 print(p4)
26 p5="i am {name},age {age},real {name}".format(name="zy",age=19)
27 print(p5)
28 p6="i am {name},age {age},real {name}".format(**{"name":"zy","age":19})
29 print(p6)
30 p7="i am {0[0]},age {0[1]},real {1[0]}".format([1,2,3],[4,5,6])
31 print(p7)
32 p8="i am {:s},age {:d},money {:f}".format("zy",18,123.456)
33 #f默认是6位小数
34 print(p8)
35 p9="i am {:s},age {:d}".format(*["zy",19])
36 print(p9)
37 p10="i am {name:s},age {age:d}".format(**{"name":"zy","age":19})
38 print(p10)
39 p11="{:b},{:o},{:d},{:x},{:X},{:%}".format(15,15,15,15,15,15,87654)
40 print(p11)
41 p12="{num:b},{num:o},{num:d},{num:x},{num:X},{num:%}".format(num=16)
42 print(p12)
43 p13="{0:b},{0:o},{0:d},{0:x},{0:X},{0:%}".format(17)
44 print(p13)
45 p14="{:.2%}".format(0.123456)
46 print(p14)
47 
48 执行结果:
49 i am zy,age 18,No.01
50 i am zy,age 18,No.01
51 i am zy,age 10,real zy
52 i am zy,age 10,real zy
53 i am zy,age 19,real zy
54 i am zy,age 19,real zy
55 i am 1,age 2,real 4
56 i am zy,age 18,money 123.456000
57 i am zy,age 19
58 i am zy,age 19
59 1111,17,15,f,F,1500.000000%
60 10000,20,16,10,10,1600.000000%
61 10001,21,17,11,11,1700.000000%
62 12.35%
两种字符串格式化

 

 

posted @ 2017-02-15 17:19  meitangyanyan  阅读(219)  评论(0编辑  收藏  举报