字符串格式化
Python的字符串格式化有两种方式: 百分号方式、format方式
格式化字符串时,Python使用一个字符串作为模板。模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式。Python用一个tuple将多个值传递给模板,每个值对应一个格式符。
百分号方式:
可以用如下的方式,对格式进行进一步的控制
%[(name)][flags][width].[precision]typecode
(name)为命名
flags可以有+,-,' '或0。+表示右对齐。-表示左对齐。' '为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充。
width表示显示宽度
precision表示小数点后精度
[ ]:表示可选
fill:可选,空白处填充的字符
align:可选,对其方式(需配合width使用)
<,内容左对齐
>,内容右对齐(默认)
=,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
^,内容居中
sign:可选,有无符号数字
+,正号加正,负号加负;
-,正号不变,负号加负;
空格 ,正号空格,负号加负;
#:可选,对于二进制、八进制、十六进制,如果加上#,会显示0b/0o/ox,否则不显示
,:可选,为数字添加分隔符,如:1,000,000
width:可选,格式化位所占宽度
.precision:可选,小数位保留精度
type:可选,格式化类型
传入” 字符串类型 “的参数
- s,格式化字符串类型数据
- 空白,未指定类型,则默认是None,同s
- 传入“ 整数类型 ”的参数
- b,将10进制整数自动转换成2进制表示然后格式化
c,将10进制整数自动转换为其对应的unicode字符
d,十进制整数
o,将10进制整数自动转换成8进制表示然后格式化;
x,将10进制整数自动转换成16进制表示然后格式化(小写x) - X,将10进制整数自动转换成16进制表示然后格式化(大写X)
- 传入“ 浮点型或小数类型 ”的参数
- e, 转换为科学计数法(小写e)表示,然后格式化;
- E, 转换为科学计数法(大写E)表示,然后格式化;
- f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
- F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
- g, 自动在e和f中切换
- G, 自动在E和F中切换
- %,显示百分比(默认显示小数点后6位)
s = 'i am %s,age %d' % ('kai',19)
print(s)
执行结果:i am kai,age 19
s = 'i am %(n1)s,age %(n2)s' % {'n1':'kai','n2':'100'}
print(s)
执行结果:i am kai,age 100
s = 'percent %.2f' % 1.2222
print(s)
执行结果:percent 1.22
s = 'i am %(zz).2f'%{'zz':3.555555}
print(s)
执行结果:i am 3.56
s = 'i am %(kai).2f %%' %{'kai':2.55555}
print(s)
执行结果:i am 2.56 %
format:
[[fill]align][sign][#][0][width][,][.precision][type]
[ ]:表示可选
fill:可选,空白处填充的字符
align:可选,对其方式(需配合width使用)
<,内容左对齐
>,内容右对齐(默认)
=,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
^,内容居中
sign:可选,有无符号数字
+,正号加正,负号加负;
-,正号不变,负号加负;
空格 ,正号空格,负号加负;
#:可选,对于二进制、八进制、十六进制,如果加上#,会显示0b/0o/ox,否则不显示
,:可选,为数字添加分隔符,如:1,000,000
width:可选,格式化位所占宽度
.precision:可选,小数位保留精度
type:可选,格式化类型
传入” 字符串类型 “的参数
- s,格式化字符串类型数据
空白,未指定类型,则默认是None,同s
传入“ 整数类型 ”的参数
- b,将10进制整数自动转换成2进制表示然后格式化
- c,将10进制整数自动转换为其对应的unicode字符
- d,十进制整数
- o,将10进制整数自动转换成8进制表示然后格式化;
- x,将10进制整数自动转换成16进制表示然后格式化(小写x)
- X,将10进制整数自动转换成16进制表示然后格式化(大写X)
传入“ 浮点型或小数类型 ”的参数
- e, 转换为科学计数法(小写e)表示,然后格式化;
- E, 转换为科学计数法(大写E)表示,然后格式化;
- f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
- F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
- g, 自动在e和f中切换
- G, 自动在E和F中切换
- %,显示百分比(默认显示小数点后6位)
代码如下:
zz = "i am {}, age {}, {}".format("seven",18,"alex")
print(zz)
执行结果:i am seven, age 18,alex
zz = "i am {}, age {}, {}".format(*["seven",18,"alex"])
print(zz)
执行结果:i am seven, age 18,alex
zz = "i am {0}, age {1}, really {0}".format("seven",18)
print(zz)
执行结果:i am seven, age 18, really seven
zz = "i am {0}, age {1}, really {0}".format(*["seven",18])
print(zz)
执行结果:
i am seven, age 18, really seven
zz = "i am {name}, age{age}, really {name}".format(name = "seven",age = 18)
print(zz)
执行结果:
i am seven, age18, really seven
zz = "i am {name}, age{age}, really {name}".format(**{"name":"seven","age":18})
print(zz)
执行结果:
i am seven, age18, really seven
zz = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1,2,3],[11,22,33])
print(zz)
执行结果:
i am 1, age 2, really 3
zz = "i am {:s}, age{:d}, money{:f}".format("seven",18,3.1415926)
print(zz)
执行结果:
i am seven, age18, money3.141593
zz = "i am {:s}, age {:d}".format("seven",18)
print(zz)
执行结果:
i am seven, age 18
zz = "i am {name:s}, age {age:d}".format(name = "seven", age = 18)
print(zz)
执行结果:
i am seven, age 18
zz ="i am {name:s}, age {age:d}".format(**{"name":"seven","age":18})
print(zz)
执行结果:
i am seven, age 18
zz = "numbers: {:b},{:o},{:d},{:x},{:X},{:%}".format(15,15,15,15,15,15.87623,2)
print(zz)
执行结果:
numbers: 1111,17,15,f,F,1587.623000%
zz = "numbers: {0:b},{0:o},{0:d},{0:x},{0:X},{0:%}".format(15)
print(zz)
执行结果:
numbers: 1111,17,15,f,F,1500.000000%
zz = "numbers:{num:b},{num:o},{num:d},{num:x},{num:X},{num:%}".format(num = 15)
print(zz)
执行结果:
numbers:1111,17,15,f,F,1500.000000%