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

25

在线查找{:}相关信息非常困难。我看到下面的一些代码:

def dateformat(date):
    day, month, year=date.split('/')
    return "{:4d}{:02d}{:02d}".format(int(year),int(month),int(day))

我有点知道它是在格式中填充前导 0,但我不知道{:02d}中的'02''d'是什么意思?


5
你正在查找str.format()文档 - Martijn Pieters
请查看 pyformat.info 以获取格式化字符串的文档。可能还有许多其他资源。 - Avish
回复:如果没有格式要处理,如 'hello {}'.format("world"),则不再需要使用冒号 {:} - cdarke
你可以在这本食谱中学习有关Python字符串格式化的所有内容 - https://mkaz.tech/python-string-format.html - LearnerEarner
2个回答

39
你正在寻找 str.format() 文档。具体来说,02d 部分在 格式规范微语言 中有说明。 02d 将一个整数 (d) 格式化为至少 2 个字符宽度的字段(2),并在左侧填充零(前导 0):
>>> 'No digits: {:02d}, 1 digit: {:02d}, 2: {:02d}, 3: {:02d}'.format(0, 7, 42, 151)
'No digits: 00, 1 digit: 07, 2: 42, 3: 151'
从文档中得知:
format_spec     ::=  [[fill]align][sign][z][#][0][width][grouping_option][.precision][type]

[...]

宽度是一个十进制整数,定义了最小的总字段宽度,包括任何前缀、分隔符和其他格式字符。如果未指定,则字段宽度将由内容确定。

当没有显式对齐时,用零('0')字符在宽度字段之前,可以为数字类型启用带符号零填充。这相当于一个具有填充字符'0'对齐类型'='的操作。

[...]

最后,类型决定了数据的呈现方式。[...] 可用的整数呈现类型如下:

[...]

'd'
十进制整数。以10进制输出数字。

同样的格式适用于格式化字符串字面量 (f-string, f"...")


1

关于你的信息:

format(1, '02')
'01'

format(100, '02')
'100'
        
'{:02}'.format(1)
'01'

'{:02}'.format(100)
'100'

然而,{:02d} 中的 d 表示十进制数字


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接