使用格式化字符串分隔数字组

Use a formatted string to separate groups of digits

给定一个数字 12345678910 我想输出 number id 123.456.789-10.

我试过这个:

print('number id {0:1.3}.{0:1.3}.{0:1.3}-{0:1.3}'.format("12345678910"))

但结果是number id 123.123.123-123。如何正确执行此操作?

这是实现您的目标的一种方法:

number = "12345678910"
print(
    'number id {0}.{1}.{2}-{3}'.format(
        *[number[i:i+3] for i in range(0,len(number), 3)]
    )
)
#number id 123.456.789-10.

您的代码存在一些问题。首先,"{0...}" 中的第一个数字指的是 format() 函数中的位置参数。在您的情况下,您使用的是仅指第一个参数的 all 0 。这就是为什么同一个子字符串被一遍又一遍地重复的原因。 (请注意我是如何将其更改为 {0}.{1}...{3}。)

我正在将 *[number[i:i+3] for i in range(0,len(number), 3)] 传递给格式函数,它只是将您的字符串分成 3 个块。

print([number[i:i+3] for i in range(0,len(number), 3)])
#['123', '456', '789', '10']

* 运算符执行 argument unpacking,它将列表的元素传递给 format()


更新:

作为@user2357112 ,在这种情况下,您实际上不需要大括号内的任何东西。只需使用 {} 来表示占位符。

print(
    'number id {}.{}.{}-{}'.format(
        *[number[i:i+3] for i in range(0,len(number), 3)]
    )
)