Python中字符串的format方法

字符串的格式化

字符串的 s.format() 方法会返回一个新字符串,在新字符串中原字符串的替换字段被适当格式化后的参数所替代:

1
2
>>> "The novel '{0}' was published in {1}".format("Hard Times", 1854)
"The novel 'Hard Times' was published in 1854"

每个替换字段都是由包含在花括号中的字段名标识的,如果字段名是简单的整数,就将被作为传递给 s.format() 方法的一个参数的索引位置。因此在这种情况下,名为 0 的字段被第一个参数所替代,名为 1 的字段则被第二个参数所替代。如果需要在格式化字符串中包含花括号,就需要将其复写:

1
2
>>> "{{{0}}} {1};-}}".format("I'm in braces", "I'm not")
"{I'm in braces} I'm not;-}"

如果我们试图连接字符串与数字将产生 TypeError 异常,但使用 str.format() 方法可以很容易地做到这一点:

1
2
>>> "{0}{1}".format("The amount due is $",200)
'The amount due is $200'

字段名除了可以是一个与某个 s.format() 方法参数对应的整数,也可以是方法的某个关键字参数的名称。

使用关键字参数

1
2
3
4
5
>>> string="My name is {who} , I am is {age} years old "
>>> print(string.format(who="Linux",age=18))
My name is Linux , I am is 18 years old
>>> print(string.format_map({"who":"Litingjie","age":"18"}))
My name is Litingjie , I am is 18 years old

使用位置参数和关键字参数

1
2
3
>>> string="My name is {who} , I am is {0} years old "
>>> print(string.format(18,who="Linux"))
My name is Linux , I am is 18 years old

注意:在参数列表中,关键字参数总是在位置参数之后

字段名可以引用组合数据类型——比如列表。在这样的情况下,我们可以包含一个索引(不是一个分片)来标识特定的数据项:

1
2
3
>>> stock = ["paper", "envelopes", "notepads", "pens", "paper clips"]
>>> "We have {0[1]} and {0[2]} in stock".format(stock)
'We have envelopes and notepads in stock'

在上述示例中, 0 引用的是位置参数,因此 {0[1]} 是列表 stock 参数的第二个数据项,{0[2]} 是 列表 stock 参数的第三个数据项。

字典对象也可以用于 s.format() 方法:

1
2
>>> "The {0[animal]} weighs {0[weight]}kg".format(d)
'The elephantn weighs 12000kg'
有钱任性,请我吃包辣条
0%