老办法
Python2.6之前,格式字符串的使用方法相对更简单些,虽然其能够接收的参数数量有限制。这些方法在Python3.3中仍然有效,但已有含蓄的警告称将完全淘汰这些方法,目前还没有明确的时间进度表。
格式化浮点数:
1
2
|
pi = 3.14159
print ( " pi = %1.2f " , % pi)
|
多个替换值:
1
2
3
|
s1 = "cats"
s2 = "dogs"
s3 = " %s and %s living together" % (s1, s2)
|
没有足够的参数:
使用老的格式化方法,我经常犯错"TypeError: not enough arguments for formating string",因为我数错了替换变量的数量,编写如下这样的代码很容易漏掉变量。
1
|
set = ( % s, % s, % s, % s, % s, % s, % s, % s) " % (a,b,c,d,e,f,g,h,i)
|
对于新的Python格式字符串,可以使用编号的参数,这样你就不需要统计有多少个参数。
1
|
set = set = " ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}) " . format (a,b,c,d,e,f,g)
|
Python 2.x 基于字典字符串格式化
1
2
3
4
5
6
7
8
|
"%(n)d %(x)s" % { "n" : 1 , "x" : "spam" }
reply = """
Greetings...
Hello %(name)s!
Your age squared is %(age)s
"""
values = { 'name' : 'Bob' , 'age' : 40 }
print rely % values
|
Python 3.x format方法格式化
1
2
3
4
5
6
7
8
9
10
|
template = '{0},{1} and {2}'
template. format ( 'spam' , 'ham' , 'eggs' )
template = '{motto}, {pork} and {food}'
template. format (motto = 'spam' , pork = 'ham' , food = 'eggs' )
template = '{motto}, {0} and {food}'
template. format ( 'ham' , motto = 'spam' , food = 'eggs' )
'{motto}, {0} and {food}' . format ( 42 , motto = 3.14 , food = [ 1 , 2 , 3 ])
|