在线查找{:}
相关信息非常困难。我看到下面的一些代码:
def dateformat(date):
day, month, year=date.split('/')
return "{:4d}{:02d}{:02d}".format(int(year),int(month),int(day))
我有点知道它是在格式中填充前导 0
,但我不知道{:02d}
中的'02'
和'd'
是什么意思?
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"..."
)。
关于你的信息:
format(1, '02')
'01'
format(100, '02')
'100'
'{:02}'.format(1)
'01'
'{:02}'.format(100)
'100'
然而,{:02d} 中的 d 表示十进制数字
str.format()
文档。 - Martijn Pieters'hello {}'.format("world")
,则不再需要使用冒号{:}
。 - cdarke