使用格式化字符串分隔数字组
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)]
)
)
给定一个数字 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)]
)
)