2013-09-21 142 views
0

我试图以这种方式格式化字符串,以便我可以重复一个数字序列的任意长度。Python 3字符串格式化,填充字符长度不止一个字符

我一直在看这些例子:How do I format a number with a variable number of digits in Python?String Formatting in Python 3

这里就是我试图做的:

print("{0:{1}{2}d}".format(0, 0, 8)) 

将导致在八个漂亮0的成一排,像这样:00000000 而是试图从0第二个参数更改为25

print("{0:{1}{2}d}".format(0, 25, 8)) 

结果在一个单独的0中,就像它可以在我的控制台中一样,而不是25252525所以我认为问题是使用一个字符串与多个字符作为填充符而不是单个字符。

回答

1

specification for string formatting是这样的:

format_spec ::= [[fill]align][sign][#][0][width][,][.precision][type] 

在这种情况下,我们只在[0][width]部分感兴趣。 [0]是填充数字为零的可选参数,因此您可以将4格式设置为'004'[width]指定字段的总宽度。

当你写:

print("{0:{1}{2}d}".format(0, 0, 8)) 

它变成:

print("{0:08d}".format(0)) 

这是一个0补齐零高达8长度:00000000

然而,你的其他例子:

print("{0:{1}{2}d}".format(0, 25, 8)) 

变为:

print("{0:258d}".format(0)) 

这是一个0用空格填充(因为在格式化没有0)高达258的长度。

我认为字符串格式不适合解决你的问题。您可以使用除0以外的其他填充字符(使用格式规范中的[fill]选项),但不能超过一个字符。

最简单的方式得到你想要的东西大概是这样的:感谢

>>> print((str(25) * 8)[:8]) 
25252525 
+0

吨,我是100%,停留在此的几个小时! –

相关问题