如果将那个定义说的通俗一些,字符串格式化化,就是要先制定一个模板,在这个模板中某个或者某几个地方留出空位来,然后在那些空位填上字符串。那么,那些空位,需要用一个符号来表示,这个符号通常被叫做占位符(仅仅是占据着那个位置,并不是输出的内容)。

 

>>> "I like %s"
'I like %s'

在这个字符串中,有一个符号:%s,就是一个占位符,这个占位符可以被其它的字符串代替。比如:

>>> "I like %s" % "python"
'I like python'
>>> "I like %s" % "Pascal"
'I like Pascal'

这是较为常用的一种字符串输出方式。

另外,不同的占位符,会表示那个位置应该被不同类型的对象填充。下面列出许多,供参考。不过,不用记忆,常用的只有%s%d,或者再加上%f,其它的如果需要了,到这里来查即可。

 

占位符

说明

%s

字符串(采用str()的显示)

%r

字符串(采用repr()的显示)

%c

单个字符

%b

二进制整数

%d

十进制整数

%i

十进制整数

%o

八进制整数

%x

十六进制整数

%e

指数 (基底写为e)

%E

指数 (基底写为E)

%f

浮点数

%F

浮点数,与上相同

%g

指数(e)或浮点数 (根据显示长度)

%G

指数(E)或浮点数 (根据显示长度)

 

看例子:

>>> a = "%d years" % 15
>>> print a
15 years

当然,还可以在一个字符串中设置多个占位符,就像下面一样

>>> print "Suzhou is more than %d years. %s lives in here." % (2500, "qiwsir")
Suzhou is more than 2500 years. qiwsir lives in here.

对于浮点数字的打印输出,还可以限定输出的小数位数和其它样式。

>>> print "Today's temperature is %.2f" % 12.235
Today's temperature is 12.23
>>> print "Today's temperature is %+.2f" % 12.235
Today's temperature is +12.23

注意,上面的例子中,没有实现四舍五入的操作,貌似只是截取。其实,我在这里用的那个12.235的确有点特殊化了。你不妨修改为别的数,试一试,看看是不是四舍五入了。至于这个数的特殊性,如果你不能理解,就请回头找一找本教程中关于十进制与二进制数转换的讲述。

关于类似的操作,还有很多变化,比如输出格式要宽度是多少等等。如果看官在编程中遇到了,可以到网上查找。我这里给一个参考图示,也是从网上抄来的。

python 用for语句 输出字符串中每一个字符 python输出字符串的个数_占位符

其实,上面这种格式化方法,常常被认为是太“古老”了。因为在python中还有新的格式化方法。

>>> s1 = "I like {0}".format("python")
>>> s1
'I like python'
>>> s2 = "Suzhou is more than {0} years. {1} lives in here.".format(2500, "qiwsir") 
>>> s2
'Suzhou is more than 2500 years. qiwsir lives in here.'

这就是python非常提倡的string.format()的格式化方法,其中{索引值}作为占位符,

这种方法真的是非常好,而且非常简单,只需要将对应的东西,按照顺序在format后面的括号中排列好,分别对应占位符{}即可。我喜欢的方法。

如果你觉得还不明确,还可以这样来做。

>>> print "Suzhou is more than {year} years. {name} lives in here.".format(year=2500, name="qiwsir") 
Suzhou is more than 2500 years. qiwsir lives in here.

真的很简洁,看成优雅。

其实,还有一种格式化的方法,被称为“字典格式化”,这里仅仅列一个例子,如果看官要了解字典的含义,本教程后续会有的。

>>> lang = "python"
>>> print "I love %(program)s"%{"program":lang}
I love python

列举了三种基本格式化的方法,你喜欢那种?我推荐:string.format()

 

========================================end 木风卜雨========================================

========================================end 木风卜雨========================================