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

2024-03-29 00:27:32 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个像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。如何正确操作?你知道吗


Tags: idformatnumber数字print
1条回答
网友
1楼 · 发布于 2024-03-29 00:27:32

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

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()函数中的位置参数。在您的例子中,您使用的是all0,它只引用第一个参数。这就是为什么相同的子串被重复了一遍又一遍。(注意我是如何把它改成{0}.{1}...{3}。)

我将*[number[i:i+3] for i in range(0,len(number), 3)]传递给format函数,它只是将字符串分成3块。你知道吗

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

*操作符执行argument unpacking,它将列表的元素按顺序传递给format()。你知道吗


更新

作为@user2357112mentioned in the comments,在本例中,实际上不需要在大括号中使用任何内容。只需使用{}来表示占位符。你知道吗

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

相关问题 更多 >