64

使用せずに、2 つの文字列変数の間にテキストを配置するために間隔を追加しようとし" "ています。

2 番目の列を揃えて、テキストをこのように表示しようとしています。

Location: 10-10-10-10       Revision: 1
District: Tower             Date: May 16, 2012
User: LOD                   Time: 10:15

現在、スペースを使用するだけで、このようにコーディングされています...

"Location: " + Location + "               Revision: " + Revision + '\n'

string.rjust&で作業しようとしましsrting.ljustたが、役に立ちませんでした。

提案?

4

6 に答える 6

79

format メソッドを使用できるはずです。

"Location: {0:20} Revision {1}".format(Location, Revision)

ラベルの長さに応じて、各行のフォーマットの長さを把握する必要があります。行には、または行よりもUser広いフォーマット幅が必要です。LocationDistrict

于 2012-05-16T17:45:17.897 に答える
58

各文字列に列幅のプレフィックスを付けて試してみてください%*s%-*s

>>> print "Location: %-*s  Revision: %s" % (20,"10-10-10-10","1")
Location: 10-10-10-10           Revision: 1
>>> print "District: %-*s  Date: %s" % (20,"Tower","May 16, 2012")
District: Tower                 Date: May 16, 2012
于 2012-05-16T17:46:40.217 に答える
31

expandtabs次のように、タブストップを指定するために使用できます。

print(('Location: ' + '10-10-10-10' + '\t' + 'Revision: 1').expandtabs(30))
print(('District: Tower' + '\t' + 'Date: May 16, 2012').expandtabs(30))

出力:

Location: 10-10-10-10         Revision: 1
District: Tower               Date: May 16, 2012
于 2012-05-16T17:47:51.463 に答える
14

@IronMensanのフォーマットメソッドの答えが道です。しかし、ljust に関するあなたの質問に答えるために:

>>> def printit():
...     print 'Location: 10-10-10-10'.ljust(40) + 'Revision: 1'
...     print 'District: Tower'.ljust(40) + 'Date: May 16, 2012'
...     print 'User: LOD'.ljust(40) + 'Time: 10:15'
...
>>> printit()
Location: 10-10-10-10                   Revision: 1
District: Tower                         Date: May 16, 2012
User: LOD                               Time: 10:15

この方法では、文字列の長さを知る必要がないことに注意してください。.format() もあるかもしれませんが、私はそれについて十分に精通していません。

>>> uname='LOD'
>>> 'User: {}'.format(uname).ljust(40) + 'Time: 10:15'
'User: LOD                               Time: 10:15'
>>> uname='Tiddlywinks'
>>> 'User: {}'.format(uname).ljust(40) + 'Time: 10:15'
'User: Tiddlywinks                       Time: 10:15'
于 2012-05-16T18:26:38.667 に答える