Учитывая число вроде 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(). В вашем случае вы использовали все 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']
Оператор * выполняет распаковка аргументов, который передает элементы списка в format().
Обновлять:
Как @ user2357112 упоминается в комментариях, в этом случае вам на самом деле ничего не нужно внутри фигурных скобок. Просто используйте {} для обозначения заполнителей.
print(
'number id {}.{}.{}-{}'.format(
*[number[i:i+3] for i in range(0,len(number), 3)]
)
)