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) 的最小字符串长度不同。此处详述的简单数字填充是不够的。这可能吗?
您可以使用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)