字符串的格式化
字符串的 s.format()
方法会返回一个新字符串,在新字符串中原字符串的替换字段被适当格式化后的参数所替代:
1 | "The novel '{0}' was published in {1}".format("Hard Times", 1854) |
每个替换字段都是由包含在花括号中的字段名标识的,如果字段名是简单的整数,就将被作为传递给 s.format()
方法的一个参数的索引位置。因此在这种情况下,名为 0 的字段被第一个参数所替代,名为 1 的字段则被第二个参数所替代。如果需要在格式化字符串中包含花括号,就需要将其复写:
1 | "{{{0}}} {1};-}}".format("I'm in braces", "I'm not") |
如果我们试图连接字符串与数字将产生 TypeError
异常,但使用 str.format()
方法可以很容易地做到这一点:
1 | "{0}{1}".format("The amount due is $",200) |
字段名除了可以是一个与某个 s.format()
方法参数对应的整数,也可以是方法的某个关键字参数的名称。
使用关键字参数
1 | "My name is {who} , I am is {age} years old " string= |
使用位置参数和关键字参数
1 | "My name is {who} , I am is {0} years old " string= |
注意:在参数列表中,关键字参数总是在位置参数之后
字段名可以引用组合数据类型——比如列表。在这样的情况下,我们可以包含一个索引(不是一个分片)来标识特定的数据项:
1 | "paper", "envelopes", "notepads", "pens", "paper clips"] stock = [ |
在上述示例中, 0 引用的是位置参数,因此 {0[1]}
是列表 stock
参数的第二个数据项,{0[2]}
是 列表 stock
参数的第三个数据项。
字典对象也可以用于 s.format()
方法:
1 | "The {0[animal]} weighs {0[weight]}kg".format(d) |