Возможно, самым элегантным способом является использование метода format
. Это позволяет легко определить пространство строки будет использовать:
>>> name = 'Якета'
>>> asterisks = '****************************'
>>> price = 1250.23
>>> print '{0:17}: {1} {2} €'.format(name, asterisks, price)
Якета : **************************** 1250.23 €
Если вам необходимо программно определить размер отступа (например, динамически принимать большие строки вместо жесткого кодирования его размера), просто используйте ljust
:
>>> name = 'Якета'
>>> asterisks = '****************************'
>>> price = 1250.23
>>> padding = 17
>>> print '{0}: {1} {2} €'.format(name.ljust(padding), asterisks, price)
Якета : **************************** 1250.23 €
Учитывая тот случай, когда максимальный размер строки неизвестен ранее и сценарий должен адаптироваться к ней, нам нужно только вычислить максимальный размер строки и поместить его в padding
:
>>> names = ['abc', 'defghijklm', 'op', 'q']
>>> asterisks = '****************************'
>>> price = 1250.23
>>> padding = max(map(len, strings))
>>> for name in names:
print '{0}: {1} {2} €'.format(name.ljust(padding), asterisks, price)
abc : **************************** 1250.23 €
defghijklm: **************************** 1250.23 €
op : **************************** 1250.23 €
q : **************************** 1250.23 €
This thread имеет довольно подобную проблему.
Получите 'len' строки, вычтите ее из' len' самой длинной строки и добавьте много пробелов в конец строки. –