我想像这样输出文本:
Якета : **************************** 1250.23 €
Обувки за футбол : ********************** 912.30 €
Екипи : ************** 513.45 €
Топки : ************ 502.52 €
T-SHIRTS : ********* 420.19 €
如何使用占位符将所有冒号缩进到最长字符串的长度 - 在本例中为 Обувки за футбол
?
最佳答案
也许,最优雅的方法是使用 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有一个非常相似的问题。
关于python - python中打印时的字符串对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35153862/