也许,最优雅的方法是使用
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
有一个非常相似的问题。