2017-03-13 45 views
0

爲什麼我會在每個\ t之間獲得不同數量的空間,我將如何去解決這個問題?爲什麼python在使用tab時添加不同的空間長度?

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

輸出:

Name1: Name2: Number1: Number2: 

數字1之間的空間:和NUMBER2:是不一樣的前兩個;我怎麼去解決這個問題?

+0

如果要固定間距,請使用空格。選項卡最有可能考慮標籤之間的字符串的長度,即嘗試'print(「\ tName1:\ tName2:\ tName3:\ tName4:」)'看看會發生什麼 – ryugie

+0

@ryugie我看到,使用相同的字符串長度每個標籤給我相同數量的間距 – user3681585

回答

1

控制檯在每8個空格處都有製表位。如果您通過製表位,它會轉到下一個。您可以看到製表位在哪裏:

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

它確保在選項卡後至少還有一個空格。這就是爲什麼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

0

\ t前進到下一個製表位;這通常設置爲8列的下一個倍數。換句話說,它並沒有被破壞:它的工作就像它應該的那樣。

如果您希望標籤之間有相同數量的空格,請使用固定數量的空格,而不是製表符。例如:

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

您也可以使用formatted output

0

以下是在每個字符串之間放置n空格的簡單方法。

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