2017-03-13 8 views
0

各\ t間に異なる量のスペースが必要なのはなぜですか。これを修正するにはどうすればよいでしょうか?なぜタブを使用しているときに別のスペースの長さを追加するPythonですか?

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

出力:

Name1: Name2: Number1: Number2: 

数値1との間の空間:と数値2:最初の二つは同じではありません。これを修正するにはどうすればいいですか?

+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 
     ^ ^ ^ ^ ^

タブの後に少なくとも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

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: 
関連する問題