Python 如何防止字符串之间存在大小不同的空格?

Python 如何防止字符串之间存在大小不同的空格?,python,string,formatting,Python,String,Formatting,这可能是一个相当模糊的问题,所以我会尽可能地解释。假设我有两个变量(长度大小不同) 我如何打印它们,使输出在每个变量之间保持一致的间隔,而不知道字符串的确切长度? 例如,如果我正常打印出来,中间有东西: print(variable_one + " - Age: 40") print(variable_two + " - Age: 2") 产出将是: John Doe - Age: 40 Thomas Smith - Age: 2 如何自动使输出与空格一致,使其看起来像这样: John Do

这可能是一个相当模糊的问题,所以我会尽可能地解释。假设我有两个变量(长度大小不同)

我如何打印它们,使输出在每个变量之间保持一致的间隔,而不知道字符串的确切长度? 例如,如果我正常打印出来,中间有东西:

print(variable_one + " - Age: 40")
print(variable_two + " - Age: 2")
产出将是:

John Doe - Age: 40
Thomas Smith - Age: 2
如何自动使输出与空格一致,使其看起来像这样:

John Doe      -      Age: 40
Thomas Smith  -      Age: 2
谢谢:)
~Pete

你可以试试字符串格式

"{:10s} {:s}".format(variable1, " - Age 40")
其中,
10
是希望变量1使用的字符数。如果其长度小于该值,则会用空格填充。第二个字符串也是如此

但是,您的
-
连字符是第二个字符串的一部分,因此无法填充,除非您手动拆分字符串。

尝试使用格式:

print('{0:12s} - Age {1:<d}'.format(var, age))
上面应该给出与使用格式相同的内容,但我发现它更具可读性


此外,还有格式化字符串和格式的文档:,如果这里的答案都不是您想要的,您可以通过这些文档调整格式。

如果您事先知道需要打印的所有变量,并且这些变量存储在
vars
中,年龄存储在
ages
中,您可以使用字符串格式,如:

max_len = max(map(len, vars))
for name, age in zip(vars, ages)
     print("{0:{1}} - Age: {2}".format(name, max_len, age))
如果它们存储为带有
名称
年龄
字段的对象,则

max_len = max([len(var.name) for var in vars])
for var in vars
     print("{0.name:{1}} - Age: {0.age}".format(var, max_len))
如果您事先不知道所有变量,可以对硬编码的填充名称的宽度执行相同的操作:

print("{0:10} - Age: {1}".format(name, age))

尝试
print(变量\u one+“\t\t-\tAge:\t40”)
如果检查字符串的精确长度,则不需要在“不知道字符串的精确长度”的情况下打印可能的副本。@Haris只有在差异小于制表符大小时才有效,即使如此,我也不总是看到。但是“\t”不就是tab吗?另外,这两个变量,我知道大小。如果我从其他地方收集数据,我不知道数据的大小。谢谢你的帮助,非常感谢!这真的很有帮助。
max_len = max([len(var.name) for var in vars])
for var in vars
     print("{0.name:{1}} - Age: {0.age}".format(var, max_len))
print("{0:10} - Age: {1}".format(name, age))