Python 3字符串格式,填充多个字符长

时间:2013-09-21 20:52:22

标签: python-3.x string-formatting

我试图以这种方式格式化一个字符串,以便我可以将重复的数字序列设为任意长度。

我一直在研究这些示例: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 个答案:

答案 0 :(得分: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