将整数替换为空格数

时间:2014-08-12 04:23:53

标签: python

如果我有这些名字:

bob = "Bob 1"

james = "James 2"

longname = "longname 3"

引用这些让我:

Bob 1

James 2

longname 3

如何确保数字对齐(不使用\ t或标签或其他内容)?像这样:

Bob 1

James 2

longname3

1 个答案:

答案 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))

请参阅:Format specification docs