如果我有这些名字:
bob = "Bob 1"
james = "James 2"
longname = "longname 3"
引用这些让我:
Bob 1
James 2
longname 3
如何确保数字对齐(不使用\ t或标签或其他内容)?像这样:
Bob 1
James 2
longname3
答案 0 :(得分:5)
这对format
字符串很有用,它可以指定要用字符填充的字段的宽度(包括空格)。但是,如果您的字符串位于帖子顶部的格式,则必须首先split()
。例如:
"{: <10}{}".format(*bob.split())
# output: 'Bob 1'
<
表示左对齐,而前面的空格是用于“填充”该字符数的“emtpy”部分的字符。 不是空格。 10
是空格的数量,:
只是为了防止它认为<10
应该是要插入的参数的名称。
根据您的示例,您希望宽度基于最长名称。在这种情况下,你不想像我刚才那样硬编码10
。相反,你想要获得最长的长度。这是一个更好的例子:
names_and_nums = [x.split() for x in (bob, james, longname)]
longest_length = max(len(name) for (name, num) in names_and_nums)
format_str = "{: <" + str(longest_length) + "}{}"
for name, num in names_and_nums:
print(format_str.format(name, num))