当需要把字符串和数字混合输出时,需要字符串的格式化输出。字符串的格式化输出有两种途径:格式化运算符%和format( )方法,两种途径可以达到相同的效果。
格式化运算符%
‘使用格式化运算符%的字符串’%(数据1, 数据2…)
'Happy Birthday %d!' %(23)
'Happy Birthday 23!'
%d是格式占位符,表示后面要替代数据的类型。格式占位符有很多种,如下表所示。
占位符
含义
%c
单个字符,替换成只有一个字符的字符串,或将一个表示字符的Unicode编码转换成一个字符替换进来
%s
字符串
%d
整数
%u
无符号整数
%o
八进制数
%x,%X
十六进制数,字母小写和大写
%f
浮点数
%e,%E
科学记数法表示的浮点数,字符小写和大写
%g,%G
综合浮点数和科学记数法表示的浮点数,由系统自动决定
注意:如果字符串中本身带有%字符,则需要用%%表示。
在%和占位符之间,还可以加入其它数字或符号表示更详细的格式控制。%和占位符之间可以添加数字,表示字符所占的空间。当字符实际需要的空间大于该数字时,字符默认右对齐,左边用空格填充;当字符实际需要的空间小于该数字时,会全部输出而不会截断。
对于输出浮点数,%和占位符的数字之间增加.num指定小数点后输出的位数。%8.2f表示一个占据8个字符,取两位小数的浮点数。此处的两个数字必须是整数,也可以用*表示,此时用随后给出的数值中的数字来替换,此功能可以动态确定占位空间和小数位数。
a = 10
b = 2
print('I like %*.*f' %(10,2,11.3456))
I like 11.35
此外,%和数字之间还可以添加以下符号:
符号
含义
-
左对齐
0
用0填充,不用空格
+
给正数添加正号
空格
正数前增加一个空格,保持于负数对齐
format() 方法
format()方法是比格式化运算符更灵活的格式化输出方法。
‘使用format()方法的字符串{数据索引}’.format(数据1,数据2…)
age = 22
name = 'Colin'
'My name is {}, age {}'.format(name,age)
'My name is {1}, age {0}'.format(age,name)
'My name is {1}, age {0} {1}'.format(age,name)
'My name is Colin, age 22'
'My name is Colin, age 22'
'My name is lalala, age 22 lalala'
与格式化运算符类似,format()方法也可以指定填充字符、对齐方法、宽度、精度和进制。其一般格式为:
{:}
'{0:*>10}'.format(10)
'{0:*^10}'.format(10)
'{0:*<10}'.format(10)
'{0:.2f}'.format(1/3)
'{0:x}'.format(10)
'********10'
'****10****'
'10********'
'0.33'
'a'
利用format()方法还可以对千分位进行格式化。
'{:,}'.format(12345678901)
'12,345,678,901'