为什么python在使用tab时会添加不同的空格长度?

时间:2017-03-13 23:30:59

标签: python tabs indentation

为什么我会在每个\ t之间获得不同的空间量以及如何解决此问题?

print ("\tName1:\tName2:\tNumber1:\tNumber2:")

输出:

Name1:  Name2:  Number1:    Number2:

Number1:和Number2:之间的空格与前两个不一样;我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

控制台每8个空格都有制表位。如果您通过制表位,它将移至下一个制表位。您可以在此处查看制表位的位置:

print("\tName1:\tName2:\tNumber1:\tNumber2:") 
print('1234567890'*5)
print('\t^'*5)
        Name1:  Name2:  Number1:        Number2:
123456781234567812345678123456781234567812345678
        ^       ^       ^       ^       ^

确保选项卡后至少仍有1个空格。这就是为什么Number2:被移动到下一个制表位的原因。

如果您想以预先固定的间距进行打印,可以这样做:

header = ['Name1:', 'Name2:', 'Number1:', 'Number2:']
# set the width of the headers as the widest string length plus 4
width = max(len(h) for h in header) + 4
print('{: <w}{: <w}{: <w}{: <w}'.replace('w',str(width)).format(*header))

# output:
Name1:      Name2:      Number1:    Number2:

print语句有点令人困惑,但它设置用width填充每个字符串的空格数。

答案 1 :(得分:0)

\ t前进到下一个制表位;这通常设置为8列的下一个倍数。换句话说,它没有被破坏:它的运作正如它应该的那样。

如果您希望标签之间有相同数量的空格,请使用固定数量的空格,而不是制表符。例如:

space = "    "
print "Name1" + space +
      "Name2" + space +
      "Name3" + space +
      "Name4"

您也可以使用formatted output

答案 2 :(得分:0)

这是在每个字符串之间放置n空格的简单方法。

>>> n = 3
>>> print((' '*n).join(('Name1:', 'Name2:', 'Number1:', 'Number2:')))
Name1:   Name2:   Number1:   Number2: