一,简单介绍:
有时候字符串中的一些值会根据变量的变化而不断变化,而一旦程序运行起来,进行手动修改显然不够方便,这时候就需要用到格式化字符对字符串进行格式化。举个简单的例子:
Dic={'Tom':79,'Sam':80,'Xiao Ming':100}#学生的分数
for i in ['Tom', 'Sam', 'Xiao Ming']:#学生的名字
print "%s's score is %d." % (i,Dic[i])#输出成绩单
运行结果:
是不是很方便?
二,格式化字符(占位符):
下面只介绍常用的几种,其它的还没有遇到。
%d
%f
%r
%s
%%
%d和%f都可以用来输出数字,不同的是前者代替整数,后者代替浮点数。
my_age = 20
print "I'm %d years old." % my_age
my_height = 1.60
print "I'm %f meters tall." % my_height
运行结果:
不过这样的结果并不令人满意,默认情况下,保留小数点后面6位有效数字,这让输出的结果不太美观,有什么办法让结果显示两位小数呢?
%d和%f实际上还有许多“特异功能”:
自定义浮点数小数点位数:
%.nf(看清楚有个句点)
print "height:%.2f." % 1.6
运行结果:
n为指定小数位数,此例中浮点数精确到小数点后两位。
指定占位符宽度:
%nd %n.mf
print "age: %8d. height: %8.2f." % (20, 1.6)
运行结果:
其中n为占位宽度,此例中冒号和句点之间占了8个字符位。
n要大于或等于数字本身所占位数,否则没有意义:
print "age: %3d." % 2000
运行结果:
指定占位符宽度(左对齐):
%-nd %-n.mf
print "age: %-8d. height: %-8.2f." % (20, 1.6)
运行结果:
指定占位符宽度(用零占位):
%0nd %0n.mf
print "age: %08d. height: %08.2f." % (20, 1.6)
运行结果:
%r和%s一般用来输出字符串,但二者又有差别,前者常用作调试,它显示的是变量的原始数据,即照搬整个对象,它打印出来的是你作为程序员写在脚本里的东西,而后者用于显示,它打印的是你作为用户应该看到的东西。
举个例子:
print "I'm %r. I'm %s." % ('Tom','Tom')
运行结果:
当然,%r和%s也有“特异功能”,用法和%d与%f类似:
举几个例子:
print "I'm %.2r. I'm %.2s." % ('Tom','Tom')
print "I'm %10r. I'm %10s." % ('Tom','Tom')
print "I'm %-10r. I'm %-10s." % ('Tom','Tom')
print "I'm %-10.2r. I'm %-10.2s." % ('Tom','Tom')
运行结果:
%%用于输出一个百分号:
print "growth rate: %d %%" % 7
运行结果:
如果不用%%,会出现错误:
print "growth rate: %d %" % 7