Python string formatting with 'n' number of digits (when using keys) Python 2.7
本问题已经有最佳答案,请猛点这里访问。
要在字符串格式中具有特定的位数,我知道可以这样做:
1 2 3 4 5 6 7 | In [18]: hours = 01 In [19]:"%.2d" %(hours) Out[19]: '01' In [20]:"%.2f" %(hours) Out[20]: '1.00' |
但我的情况有点不同。我使用特定的键来表示值,例如:
1 | for filename in os.listdir('/home/user/zphot_01/') |
这里我想对
1 | for filename in os.listdir('/home/user/zphot_{value1}/'.format(value1=some_number): |
当我对
编辑:
大多数答案只针对一个值,但是,我希望有多个键值,即:
1 | for filename in os.listdir('/home/user/zphot_{value1}/zphot_{value2}'.format(value1=some_number1,value2=some_number2)). |
新的格式字符串语法允许您使用格式说明符,就像旧的基于
您所要做的就是将格式说明符放在格式化表达式中,用冒号与字段名/数字隔开。在这种情况下,可以使用
有很多方法。看这个答案。
这是我的主观意见,但我已经从最坏的到最好的顺序了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | >>> '1'.zfill(2) '01' >>> '%02d' % 1 '01' >>> '%02s' % '1' '01' >>> '{0:0>2}'.format(1) '01' >>> '{0:02d}'.format(1) '01' >>> '{:02d}'.format(1) '01' >>> f'{1:02}' '01' |
然后,您必须将它与当前的字符串结合起来,没有什么真正复杂的。
编辑:我不确定OP在他的编辑中到底要求什么,但是:
1 | for filename in os.listdir('/home/user/zphot_{value1}/zphot_{value2}'.format(value1=some_number1,value2=some_number2)). |
可以通过很多方式改变,我举几个例子:
1 2 3 4 5 6 7 8 9 10 11 | >>> number_first, number_second = '1', '2' >>> '/home/user/zphot_{value1}/zphot_{value2}'.format(value1 = number_first.zfill(2), value2 = '2'.zfill(2)) '/home/user/zphot_01/zphot_02' >>> '/home/user/zphot_{}/zphot_{}'.format('1'.zfill(2), number_second.zfill(2)) '/home/user/zphot_01/zphot_02' >>> f'/home/user/zphot_{{number_first:02}}/zphot_{2:02}' '/home/user/zphot_01/zphot_02' >>> '/home/user/zphot_%02d/zphot_%02s' % (1, '2') '/home/user/zphot_01/zphot_02' >>> '/home/user/zphot_{:02d}/zphot_{:02d}'.format(1, 2) '/home/user/zphot_01/zphot_02' |
等。
1 2 | print("{0:02}".format(1)) >>0001 |
刚刚从其他答案和评论中得知,我们不需要
扩展到更多位置:
1 2 | print("{0:02}_{1:02}".format(1, 2)) >>0001_0002 |