在 python 中打印时的字符串对齐
String alignment when printing in python
我想像这样输出文本:
Якета : **************************** 1250.23 €
Обувки за футбол : ********************** 912.30 €
Екипи : ************** 513.45 €
Топки : ************ 502.52 €
T-SHIRTS : ********* 420.19 €
如何使用占位符将所有冒号缩进到最长字符串的长度 - 在本例中为 Обувки за футбол
?
我会做这样的事情(有点"hackish"):
- 得到最长的字符串
longest = len(longest_string)
。如果你的字符串在 list
中,那么 longest = len(max(mylist, key=len))
.
- 计算所有字符串
spaces = longest - len(str)
。
- 在字符串的每一端添加
spaces
个空格。
可能,最优雅的方法是使用format
方法。它允许轻松定义 space 字符串将使用:
>>> 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 有一个非常相似的问题。
我想像这样输出文本:
Якета : **************************** 1250.23 €
Обувки за футбол : ********************** 912.30 €
Екипи : ************** 513.45 €
Топки : ************ 502.52 €
T-SHIRTS : ********* 420.19 €
如何使用占位符将所有冒号缩进到最长字符串的长度 - 在本例中为 Обувки за футбол
?
我会做这样的事情(有点"hackish"):
- 得到最长的字符串
longest = len(longest_string)
。如果你的字符串在list
中,那么longest = len(max(mylist, key=len))
. - 计算所有字符串
spaces = longest - len(str)
。 - 在字符串的每一端添加
spaces
个空格。
可能,最优雅的方法是使用format
方法。它允许轻松定义 space 字符串将使用:
>>> 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 有一个非常相似的问题。