Python 字符串格式化:填充负数

car*_*der 3 python number-formatting

我想将我的整数格式化为字符串,以便在没有符号的情况下,它们将被零填充以具有至少两位数。

例如我想要

1
-1
10
-10
Run Code Online (Sandbox Code Playgroud)

成为

01
-01
10
-10
Run Code Online (Sandbox Code Playgroud)

具体来说,我想要负数 (3) 和非负数 (2) 的最小字符串长度不同。此处详述的简单数字填充是不够的。这可能吗?

Jea*_*bre 6

您可以使用str.format, 但在大小上加 1 以在此处考虑负数:

l = [1,-1,10,-10,4]

new_l = ["{1:0{0}d}".format(2 if x>=0 else 3,x) for x in l]

print(new_l)
Run Code Online (Sandbox Code Playgroud)

结果:

['01', '-01', '10', '-10', '04']
Run Code Online (Sandbox Code Playgroud)

它之所以有效,是因为format接受嵌套表达式:您也可以将大小 ({:02d}{:03d}) 作为格式项传递,从而避免在第一遍中格式化格式字符串的麻烦。


小智 6

根据here,类型描述符前需要一个空格,因此两者都

'% d'%(1)
Run Code Online (Sandbox Code Playgroud)

'{: d}'.format(1)
Run Code Online (Sandbox Code Playgroud)

结果(注意空格)

' 1'
Run Code Online (Sandbox Code Playgroud)

与上面用 -1 调用的结果很好地对齐:

'-1'
Run Code Online (Sandbox Code Playgroud)