介绍
在Python中,有一种非常好用的字符串格式化函数——format()
。Python中字符串格式化之所以重要,是因为在编写各类应用时,格式化字符串是必须遵循的规范,否则可能会引起难以处理的错误。而format()
函数就是为了在Python开发中更好地自定义字符串而设计的。
基本用法
使用格式化函数format()
的方式非常简单。我们只需要定义一定的字符串并使用花括号{}
标记需要被替换的位置即可。在调用函数时,我们以相同的顺序传入值即可。
具体来说,我们可以把一个字符串当作模板,模板中使用一对大括号{}
表示要填入值的位置,并在字符串后面调用格式化函数format()
,把需要填入的值以参数的形式传入,最后格式化将其填入到字符串当中。看下面这个例子:
greeting = 'Hello, {}!'
print(greeting.format('world'))
在这里,我们首先定义了一个字符串greeting
,它有一个占位符,表示待替换的位置。接着,我们调用format()
函数,并将它作为一个方法作用于字符串上面。最后一个方法里面的参数将会填在占位符所在的位置。我们最终会得到这个结果:
Hello, world!
我们也可以在字符串模板中添加多个占位符,这里给出一个例子说明:
location = 'planet'
planet_number = 7
print('The {0} is the {1}th planet from the sun'.format(location, planet_number))
在这里,我们将两个变量location
和planet_number
的值插入到字符串中。在字符串中,我们定义了两个占位符,在函数format()
的参数中以正确的顺序进行传参。作为结果,我们得到如下输出:
The planet is the 7th planet from the sun
参数命名
通过命名参数我们可以使代码更加可读且容易维护。这个过程也非常简单。在字符串模板中,我们可以使用花括号包裹着一个名称,而在调用format()
函数时使用该名称来传递相应参数。
print('Hi, {name}!'.format(name='Tom'))
在这个例子中,我们在字符串模板中使用了一个命名参数。当我们调用format()
函数的时候,我们使用这个参数的名字进行传参。作为结果我们得到如下输出:
Hi, Tom!
格式限定符
浮点数格式化
我们可以使用格式限定符来控制字符串占位符中变量的类型。在这个例子中,我们使用了格式限定符.2f
来控制{num}
占位符被替换后的数字保留两位小数。
num = 3.14159
print('Pi is approximately {:.2f}'.format(num))
在这里,字符串模板中包括列式占位符{:.xf}
,其中的x
是小数点后的数字位数。由于对于num
限定了格式限定符.2f
,它将四舍五入到小数点后两位。输出为:
Pi is approximately 3.14
字符串对齐
另外一个常用的字符串格式化操作是改变变量在字符串中的位置。我们可以使用格式限定器%
和{}
来实现。当我们在字符串模板中添加了{:
和}
,我们可以通过添加数字来改变字符串中变量的展示位置,数字定义了输出的宽度。
使用<
、^
和>
这三个符号来定义我们想要的对齐方式。其中<
表示将字符串向左对齐,^
表示居中对齐,而>
表示将字符串向右对齐。
name = 'Tom'
print('Hello, {:>10}!'.format(name))
在这里,我们使用了格式化模板字符串'Hello, {:>10}!'
,将其通过format()
函数传入变量name
并格式化。由于在这里使用了符号>
,我们使用了右对齐操作。最后一个数字10
表示我们希望变量的输出长度至少达到这个数字,不足则在左侧添加空格。
Hello, Tom!
数字格式化
我们还可以使用格式限定符类似于3.2f
的形式来格式化数字。这里需要记住,我们可以只使用.2
而不是浮点数形式的.2f
。这将用来描述需要输出的数字的最大宽度(不包括小数点和小数位)。
x = 42
print('The answer is {:04d}'.format(x))
在这个例子中,数字42
被格式化成四位数字。因为它只有两位数字长度,所以在前面加上0
进行填充另其达到指定宽度。
The answer is 0042
百分比格式化
我们也可以使用百分比符号%
来表示一个占位符应该被替换成为一个百分比字符,例如用来展示统计数量的时候。在这里,我们同样可以通过格式限定符来控制百分比符号在输出展示中的位置。
a = 0.2
print('{:.0%}'.format(a))
在这个例子中,我们把浮点数被转换成了百分比形式来表示。具体来说,在占位符中{:.0%}
,我们使用格式限定符.0%
控制了百分比符号的位置。最终的结果输出为:
20%
可变参数
除了之前介绍的使用特定顺序与命名参数的方式,我们还可以通过解包定长、可迭代的对象作为函数的参数,将这些值传递给占位符。在这个情况下,我们可以在字符串模板中使用一对星号**
来标记这个特殊的参数。
values = {'x': 1, 'y': 2, 'z': 3}
print('X: {x}; Y: {y}; Z: {z}'.format(**values))
在这个例子中,我们定义了一个名为values
的字典,一共包含三个键值对。然后使用**
运算符解包这个字典,将对应的值传递到字符串模板的占位符中。
X: 1; Y: 2; Z: 3
总结
在本文中我们详细探讨了Python中字符串格式化的常用方式:使用字符串模板、使用命名参数、添加格式限定符、改变字符串对齐方式以及通过传递可变参数来实现字符串格式化。对于初学者来说,这些方法可以极大地方便我们在编写 Python 代码时,定义和使用字符串。我们希望本文对您有所帮助!