字符串格式 - Python

时间:2013-07-05 00:19:21

标签: python string python-2.7 printing

我有两个字符串,其长度可根据输入而变化。我想格式化它们将它们对齐到中间并用' '填充剩余的空间。每个字符串以^^结尾开头。

情况1:

String1 = Longer String
String2 = Short

需要输出:

^^   Longer String   ^^
^^       Short       ^^

情况2:

String1 = Equal String1
String2 = Equal String2

需要输出:

^^       Equal 1      ^^
^^       Equal 2      ^^

情形3:

String1 =  Short
String2 = Longer String

需要输出:

^^       Short       ^^
^^   Longer String   ^^

在所有三个输出中,长度保持不变,从而保持均匀性。

我最初的想法是,这将涉及以下列格式检查两个字符串的长度

if len(String1) > len(String2):
  #Do something
else:
  #Do something else

3 个答案:

答案 0 :(得分:2)

只需使用str.center

assert '^^' + 'Longer String'.center(19) + '^^' == '^^   Longer String   ^^'
assert '^^' + 'Short'.center(19) + '^^'         == '^^       Short       ^^'

答案 1 :(得分:0)

如果您想引用仅针对两个字符串设置居中:

cases=[
    ('Longer String','Short'),
    ('Equal 1','Equal 2'),
    ('Short','Longer String'),
    ]

for s1,s2 in cases:
    w=len(max([s1,s2],key=len))+6
    print '^^{:^{w}}^^'.format(s1,w=w)
    print '^^{:^{w}}^^'.format(s2,w=w)
    print

打印:

^^   Longer String   ^^
^^       Short       ^^

^^   Equal 1   ^^
^^   Equal 2   ^^

^^       Short       ^^
^^   Longer String   ^^

或者,如果要测试更多字符串的宽度,可以执行以下操作:

cases=[
    ('Longer String','Short'),
    ('Equal 1','Equal 2'),
    ('Short','Longer String'),
]

w=max(len(s) for t in cases for s in t)+6
for s1,s2 in cases:
    print '^^{:^{w}}^^'.format(s1,w=w)
    print '^^{:^{w}}^^'.format(s2,w=w)
    print 

打印:

^^   Longer String   ^^
^^       Short       ^^

^^      Equal 1      ^^
^^      Equal 2      ^^

^^       Short       ^^
^^   Longer String   ^^

答案 2 :(得分:0)

我最终使用以下代码,这对我有用。根据您希望将字符串格式化为多长时间,可以用任何数字替换19。

print "^^",'{:^19}'.format(String1),"^^"
print "^^",'{:^19}'.format(String2),"^^"