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