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%