0

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

我一直在看这些例子:如何在 Python 中格式化具有可变位数的数字?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所以我认为问题是使用具有多个字符的字符串作为填充符而不是单个字符。

4

1 回答 1

1

字符串格式化的规范是这样的:

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
于 2013-09-21T23:55:14.197 回答