在python中打印时的字符串对齐
我想这样输出文本:在python中打印时的字符串对齐,python,string,formatting,indentation,text-alignment,Python,String,Formatting,Indentation,Text Alignment,我想这样输出文本: Якета : **************************** 1250.23 € Обувки за футбол : ********************** 912.30 € Екипи : ************** 513.45 € Топки : ************ 502.52 € T-SHIRTS : ********* 420.19 € 我如何使用占位符
Якета : **************************** 1250.23 €
Обувки за футбол : ********************** 912.30 €
Екипи : ************** 513.45 €
Топки : ************ 502.52 €
T-SHIRTS : ********* 420.19 €
我如何使用占位符将所有冒号缩进到最长字符串的长度?在这种情况下,
ббзббфббббб
,我会这样做(有点“粗俗”):
- 获取最长的字符串
。如果字符串在longest=len(最长的字符串)
则列表中
最长=len(max(mylist,key=len))
- 为所有字符串计算
李>空格=最长-len(str)
- 在字符串的每一端添加
空格空格
- 也许,最优雅的方法是使用
格式
方法。它允许轻松定义字符串将使用的空间:
>>> 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 €
考虑到最大字符串大小以前未知且脚本必须适应的情况,我们只需计算最大字符串大小并将其放入填充中
:
>>> 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 €
有一个非常类似的问题。获取字符串的
len
,从最长字符串的len
中减去它,然后在字符串的末尾添加那么多空格。谢谢,但我已经解决了这一问题。我的问题是在动态环境中使用这种方法。假设我们不知道要打印的最长字符串的长度,因此无法硬编码占位符{0:17}内的缩进。有没有嵌套的占位符选项可以用于这种情况?我的第二个示例就是这样做的。只要把你最长的字符串大小放入padding
变量,一切都会好起来的。假设您有一个包含所有字符串的strings=['abc','defghijklm','op','q']
列表。然后,可以使用<代码> pAd= max(map(LeN,string))/代码>来计算填充,这使得myplaceholder.format(…)
。我知道我已经使用这种格式制作了脚本,以ASCII格式输出表。我想到了这一点,但我认为python必须有更干净的东西可以使用。@Alex我明白了,这是我想到的第一件事-很容易想到、理解和实现:)谢谢。我将实施它,因为到目前为止,我想不出或找不到我更喜欢的东西。