我有两个字符串,其长度可根据输入而变化。我想格式化它们将它们对齐到中间并用' '
填充剩余的空间。每个字符串以^^
结尾开头。
情况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
答案 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),"^^"