Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串格式-Python_Python_String_Python 2.7_Printing - Fatal编程技术网

字符串格式-Python

字符串格式-Python,python,string,python-2.7,printing,Python,String,Python 2.7,Printing,我有两个字符串,其长度可以根据输入而变化。我想格式化它们,将它们对齐中间,并用'填充剩余的空间。以^^开头和结尾的每个字符串 案例1: String1 = Longer String String2 = Short String1 = Equal String1 String2 = Equal String2 String1 = Short String2 = Longer String 所需输出: ^^ Longer String ^^ ^^ Short

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

案例1:

String1 = Longer String
String2 = Short
String1 = Equal String1
String2 = Equal String2
String1 =  Short
String2 = Longer String
所需输出:

^^   Longer String   ^^
^^       Short       ^^
^^       Equal 1      ^^
^^       Equal 2      ^^
^^       Short       ^^
^^   Longer String   ^^
案例2:

String1 = Longer String
String2 = Short
String1 = Equal String1
String2 = Equal String2
String1 =  Short
String2 = Longer String
所需输出:

^^   Longer String   ^^
^^       Short       ^^
^^       Equal 1      ^^
^^       Equal 2      ^^
^^       Short       ^^
^^   Longer String   ^^
案例3:

String1 = Longer String
String2 = Short
String1 = Equal String1
String2 = Equal String2
String1 =  Short
String2 = Longer String
所需输出:

^^   Longer String   ^^
^^       Short       ^^
^^       Equal 1      ^^
^^       Equal 2      ^^
^^       Short       ^^
^^   Longer String   ^^
在所有三个输出中,长度保持不变,以便保持一致性

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

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

如果要参考仅针对两个字符串设置居中:

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   ^^
只需使用:


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

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

str.center()
有什么问题?匹配字符串可能会有所不同。是的,但是你想要的宽度公式是什么?所有示例都使用宽度19,因此此代码解决了原始问题。您能否提供一个长度为的输出示例!=19,并回答为什么
相等
较长字符串的宽度都是19?这很公平。我的例子可能误导了我们。不过我同意你的解决方案。非常有用。谢谢