字符串格式化
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%