【问题标题】:Python 3 string formatting with filler more than one character long填充符长度超过一个字符的 Python 3 字符串格式
【发布时间】:2013-09-27 01:34:59
【问题描述】:

我正在尝试以这样一种方式格式化字符串,这样我就可以将重复的数字序列设为任意长度。

我一直在查看这些示例: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,所以我认为问题在于使用具有多个字符的字符串作为填充符而不是单个字符。

【问题讨论】:

    标签: python-3.x string-formatting


    【解决方案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
    

    【讨论】:

    • 非常感谢,我 100% 坚持了几个小时!
    猜你喜欢
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    相关资源
    最近更新 更多