字符串格式化允许在一个单一的步骤中对一个字符串执行多个特定类型的替换。
格式化字符串:
1. 在%操作符的左侧放置一个需要进行格式化的字符串,这个字符串带有一个或多个嵌入的转换目标,都是以%开头(例如,%d).
2. 在%操作符右侧放置一个(或多个,嵌入到元组中)对象,这些对象将会插入到左侧想让Python进行格式化字符串的一个(或多个)转换目标的位置上去。
#!/user/bin/env python
# coding=utf-8
print 'That is %d %s bird!' % (1,'dead')
exclamation="Ni"
print "THe knights who say %s!" % exclamation
print "%d %s %d you" % (1,'spam',4)
print "%s--%s--%s" % (42, 3.14159, [1,2,3])
注意,当不止一个值待插入的时候,应该在右侧用括号把它们括起来(也就是说,把它们放到元组中去)。%格式化表达式操作符在其右边期待一个单独的项或者一个或多个项的元组。
格式化总是会返回新的字符串作为结果而不是对左侧的字符串进行修改。由于字符串是不可变的,所以只能这样操作。
%[(name)][flags][width][.precision]typecode
#!/user/bin/env python
# coding=utf-8
x=1.23456789
print '%-6.2f | %05.2f | %+06.1f' % (x,x,x)
基于字典的字符串格式化
字符串的格式化同时也允许左边的转换目标来引用右边字典中的键来提取对应的值。
#!/user/bin/env python
# coding=utf-8
print "%(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(reply % values)
字符串格式化方法调用
在主体字符串中,花括号通过位置(例如{1})或关键字(例如,{food})指出替换目标及将要插入的参数。
#!/user/bin/env python
# coding=utf-8
template='{0},{1} and {2}'
print template.format('spam','ham','eggs')
template='{motto},{pork} and {food}'
print template.format(motto='spam', pork='ham', food='eggs')
template='{motto},{0},and {food}'
print template.format('ham',motto='spam',food='eggs')
添加键、属性和偏移量
方括号指定字典键,而点表示位置或关键字所引用的一项的对象属性。
#!/user/bin/env python
# coding=utf-8
import sys
print 'My {1[spam]} runs {0.platform}'.format(sys, {'spam': 'laptop'})
print 'My {config[spam]} runs {sys.platform}'.format(sys=sys,config={'spam': 'laptop'})