Если вы не хотите, чтобы по обе стороны от точек были пробелы, как подсказывает другой ответ, вы можете добиться того, чтобы указав форматирование также:
"{:.<17s}{:.>8.2f}".format(customer, balance)
Выравнивание по ширине в 17 символов по левому краю, .
по правому краю и по 8 по правому краю, .
по левому краю, с плавающей запятой с точностью до 2 десятичных знаков.
Вы можете сделать то же самое с помощью f-строки (Python> = 3.6):
f"{customer:.<17s}{balance:.>8.2f}"
Однако, если вы также хотите включить пробел по обе стороны от точек, будет сложнее. Вы все еще можете это сделать, но вам нужно дважды заполнить / отформатировать или объединить, прежде чем заполнять пробел:
"{:.<16s}{:.>9s}".format(f"{customer} ", f" {balance:>.2f}")
Но мне было бы несколько больно называть это более элегантным.
Вы также можете сделать все это с помощью форматирования:
# Fill in with calculated number of "."
"{} {} {:.2f}".format(customer,
"."*(25 - (2 + len(customer) + len(f"{balance:.2f}"))),
balance)
# Similarly used for calculated width to pad with "."
"{} {:.^{}s} {:.2f}".format(customer,
"",
25 - (2 + len(customer) + len(f"{balance:.2f}")),
balance)
Но, опять же, элегантнее, на самом деле это не так.