Python 中的 {:02d} 是什么意思?

字符串格式化是 Python 编程的一个非常重要的元素。通常,我们得到的字符串并不完全符合我们想要的格式。将字符串转换为所需的格式称为字符串格式化。

要了解有关Python 字符串的更多信息,请查看这篇文章。

在本文中,我们将介绍字符串格式化的不同方式以及 {:02d} 在字符串格式化中的关联和使用方式。

Python简介

Python是一种非常用户友好的语言,具有非常易于学习和掌握的语法,由于其类似英语的语法和无穷无尽的库而越来越受欢迎。

Python 有不同的数据类型,即。整数、布尔值、字符串等。Python 有一个很好的机制来处理字符串并格式化它们,我们将在后续部分详细讨论。

要详细了解Python 编程,请查看链接的文章。

Python 中字符串格式化的需要

Python 具有出色的字符串格式化和操作功能。字符串在程序或项目中起着至关重要的作用,因为 Python 仅以字符串形式接受输入,并且输入并不总是准备好用于处理。对字符串不小心可能会导致错误,甚至可能破坏我们的代码,因此处理字符串、将它们转换为所需的格式,然后将它们传递到处理部分非常重要。

格式良好的字符串总是比未格式化的字符串更具可读性。

了解字符串格式

让我们更详细地了解字符串格式化的过程:

不同的格式化方法

Python 提供了各种方法,我们可以通过这些方法获得我们想要的字符串格式。其中一些方法如下所示:

“%”格式

要使用此方法,我们应该首先了解格式说明符。格式说明符只不过是与“%”符号一起编写的字符或字母,用于标识数据类型。

它们如下:%s 用于字符串,%d 用于小数或整数,%f 用于浮点数,等等。要了解这是如何工作的,我们将直接跳到一个示例:

1
2
3
4
5
6
city = "Pune"
day = 2
 
message = "I moved to %s %d days ago." %(city, day)
 
print(message)

上面的代码将按照访问说明符在字符串中出现的顺序插入变量值。可以看到输出如下图所示:

字符串格式化类型1

这种字符串格式化方法是较旧的方法之一。

格式化字符串文字

在此方法中,我们将使用 fstring,它们只不过是格式化字符串。

为了实现这一点,我们需要首先在字符串开头的引号之前写入“f”,并提及我们希望将它们放置在一组花括号“{}”内的格式化变量。

让我们跳到一个例子来更好地理解:

1
2
3
4
5
6
city = "Pune"
day = 2
 
message = f'I moved to {city} {day} days ago.'
 
print(message)

上面的代码将给出以下输出:

字符串格式化类型2

‘str.format()’

此方法需要放置空花括号作为格式化变量的占位符,然后在最后,我们需要以“.format()”函数结束,在该函数中,我们按照要放置的顺序提及格式化变量它们在字符串内部。

1
2
3
4
5
6
7
8
9
name = "George"
 
marks = '85'
 
subject = 'Maths'
 
message = "{} got {} marks in {}.".format(name, marks, subject)
 
print(message)

上述代码的输出如下:

字符串格式类型3

使用格式规范的优点

格式规范对于呈现数据非常有帮助,您可以按照所需的样式对其进行格式化,并将其呈现给可能能够更好地理解数据的人。

格式化规范使代码更易于阅读和维护,随着效率的提高,生产力进一步提高许多倍。当数据以指定格式流经程序时,数据的一致性会增加。

‘{:02d}’ 格式规范

了解“{:02d}”的各个部分

格式规范中冒号 (:) 的重要性

冒号(:) 非常重要,因为它用作占位符和格式说明符之间的区分符或分隔墙。

控制数据流的精度并显示输出。它提高了一致性和效率,并使控制数据的呈现变得更加容易。

为什么我们需要“0”?

零确保将零填充添加到数字中。

在这种情况下,考虑这样一种情况,我们有一个数字小于2的数字,为了确保数字的宽度一致,它会添加零来填充剩余的空间,使数字的个数相等至 2.

为什么我们需要“2”?

类似于格式化数字或整数的宽度。生成的字符串中必须至少包含这么多数字;如果超过限制,则调整数字以适合指定的宽度。

为什么我们需要“d”?

正如我们在上面的一节中所看到的,“d”只不过是一个格式说明符。它只是说明这个地方被一个整数占据了。

让我们看一下 {:02d} 的示例:

1
2
3
4
5
6
7
8
9
10
11
n1 = 1
n2 = 23
n3 = 456
 
n1 = "{:02d}".format(n1)
n2 = "{:02d}".format(n2)
n3 = "{:02d}".format(n3)
 
print(n1)
print(n2)
print(n3)
格式规范示例

零填充

什么是零填充?

Python 不支持整数前导零。在这种情况下,如果您想添加零,您将使用的方法是“零填充”。零填充只是将前导零添加到数字中,以便它占据传递的宽度。

正如我们在上面的示例中看到的,{:02d} 向所有个位数添加一个前导零,使数字的宽度等于 2。这种添加前导零以满足所需宽度的操作称为“零”填充’。

“零填充”示例

在 {:02d} 的上下文中,我们将看到零填充如何对单位和多位整数起作用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 号
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#Single Digit
 
n1 = 9
n2 = 8
n3 = 3
 
#Multi Digit
 
n4 = 12
n5 = 345
n6 = 6789
 
###Formatting
 
#SINGLE
n1 = "{:02d}".format(n1)
n2 = "{:02d}".format(n2)
n3 = "{:02d}".format(n3)
 
#MULTI
 
n4 = "{:02d}".format(n4)
n5 = "{:02d}".format(n5)
n6 = "{:02d}".format(n6)
 
print("Single Digit Format:")
print(n1)
print(n2)
print(n3)
 
print("Multi-digit Format:")
print(n4)
print(n5)
print(n6)

您可以在输出中看到单位数和多位整数之间的差异,如下图所示:

零填充示例

实际应用

在学习了理论概念之后,现在是时候了解并看看我们如何在实际应用中使用上述知识了。

下面给出一些示例:

日期时间格式

{:02d} 可以与其他格式说明符一起使用,以所需的格式设置日期格式。
在下面的示例中,我们将借助格式说明符将日期格式化为 DD/MM/YYYY 格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from datetime import datetime as dt
 
date = dt(2023, 7, 26)
 
year = date.year
month = date.month
day = date.day
 
#Get date in DD/MM/YYYY format
new_date_format = "{:02d}/{:02d}/{:04d}".format(day, month, year)
 
print("Default Format of Date: ",date)
 
print("New format of date: ",new_date_format)

如果上面的代码没有任何错误,它应该给出这个输出。您可以看到格式说明符如何帮助我们非常轻松地格式化字符串。

日期时间示例

生成文件名序列

我们正在开发的项目需要您处理大量具有相同路径和几乎相同名称的文件,您可能必须手动创建这些文件的列表,但使用格式说明符,我们可以自动化这个无聊的过程。

让我们通过一个简单的例子来理解这个过程。

1
2
3
4
5
6
7
8
9
10
## Generating filenames
 
number_of_files = 5
prefix = 'sample'
extension = '.doc'
 
filenames = ["{}{:02d}{}".format(prefix, i, extension) for i in range(1, number_of_files+1)]
 
for file in filenames:
    print(file)

运行上面的代码将生成参数中指定的文件名列表,如下图所示:

文件名生成示例

最佳实践和技巧

要避免的常见错误

人们在使用这些格式说明符时会犯常见错误,然后很难找出代码中出了什么问题,因此避免犯这些小错误很重要。

这些可能是缺少或放错位置的冒号 (:),可能省略了宽度说明符,或者可能是不匹配的格式说明符。

为了避免这些错误,强烈建议遵守上面文章中提到的语法和编写方式。

格式化负整数

要使用负整数的格式说明符,我们需要在早期版本中使用“abs()”方法,但现在我们可以像处理正整数一样处理负整数。

概括

总之,让我们回顾一下本文中介绍的所有概念。我们首先了解 Python 及其字符串,以及字符串格式化的重要性。

我们介绍了各种字符串格式化方法和技术,甚至还看到了它们的示例。我们对 {:02d} 格式说明符进行了适当的剖析,以了解它的工作原理以及其每个组件的相关性。

最后,我们弄清楚了零填充是什么,然后看到了一些实际应用。

总之,在使用 {:02d} 时提到了一些需要遵循的最佳实践和技巧。

参考

官方文档

Stackoverflow 查询