1

I have two strings , the length of which can vary based on input. I want to format them aligning them to middle and filling up the rest of the space with ' '. Each string starting adn ending with ^^ .

Case1:

String1 = Longer String
String2 = Short

Output required:

^^   Longer String   ^^
^^       Short       ^^

Case2:

String1 = Equal String1
String2 = Equal String2

Output required:

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

Case3:

String1 =  Short
String2 = Longer String

Output required:

^^       Short       ^^
^^   Longer String   ^^

Across all three outputs the legth has been kept constant , so that uniformity is maintained.

My initial thought is that this will involve checking lengths of the two strings in the following format

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

3 回答 3

2

只需使用str.center

assert '^^' + 'Longer String'.center(19) + '^^' == '^^   Longer String   ^^'
assert '^^' + 'Short'.center(19) + '^^'         == '^^       Short       ^^'
于 2013-07-05T00:28:39.067 回答
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   ^^
于 2013-07-05T00:26:21.880 回答
0

我最终使用了以下代码,它对我有用。19 可以替换为任何数字,具体取决于您希望将字符串格式化为多长时间。

print "^^",'{:^19}'.format(String1),"^^"
print "^^",'{:^19}'.format(String2),"^^"
于 2013-07-05T01:06:36.267 回答