格式化
举个常见的例子,我们经常会收到电信运营商的短信如亲爱的xxx 你好!你xx月共消费xx元话费,当前余额是xx元
之类的字符串,而xxx的内容都是根据变量变化的,所以需要一种简便的格式化字符串的方式,使用同一套短信模板,发送给不同的用户。
在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:
name = '李小龙'
yue = '9'
xiao = '88'
yu = '20'
print('亲爱的%s 你好!你%s月共消费%s元话费,当前余额是%s元' %(name,yue,xiao,yu))
你可能猜到了,%
运算符就是用来格式化字符串的。在字符串内部,%s
表示用字符串替换到该位置, %d
表示用整数替换该位置,有几个 %
占位符,后面就跟几个变量或者值,顺序要对应好。如果%
只有一个要替换的值,可以省略%(name,yue,xiao,yu)
的括号。
IDE效果如下
常见的占位符有:
占位符 | 对应替换的数据类型 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
我上面的示例其实偷懒了,金额之类的格式化占位符应该是浮点数%f
的,因为懒 我赋值变量时所有的值都加了''
单引号,强行将金额转为字符串的数据类型,所以示例中占位符都用了%s
。
其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
print('%05d--%5d' %(3, 1)) #结果为3的前面会多5个0 (000003),1的前面则多出5个空格( 1)
print('%.2f' %3.1415926) #保留小数点后2位(3.14)