2012-05-16 12 views
35

を揃えるには、第二のカラムが整列された状態で、このように見えるようにテキストを取得しようとするので、Pythonの間隔と私は2つの文字列の間にテキストを配置するスペースを追加しようとしている文字列

を行うには、「」使用せずに、varsは。

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でなく、無駄に取り組んでみました。

提案?

+3

string.ljustは必要な処理を行う必要があります。 .ljustアリーナで試したことを投稿できますか? – JoeFish

+1

いつでも '' \ t "' –

+0

を使うことができますhttp://stackoverflow.com/questions/1448820/variable-length-of-s-with-the-operator-in-python#1448834 –

答えて

50

あなたはformatメソッドを使用することができるはずです。

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

あなたはラベルの長さに応じて、各ラインのフォーマット長の把握する必要があります。ユーザー行は、ロケーション行または区域行よりも広いフォーマット幅を必要とします。

+7

http: /docs.python.org/library/string.html#formatspecを使用すると、formatコマンドの動作方法を確認できます。 –

30

%*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 
+2

願い私はあなたにもっとアップフォートを与えることができました。すっきりした解決策は、文字列形式の "*"演算子について知らなかった –

+0

これは私がやろうとしていることに非常に近いです。地区が "DOE"に変更しても列が以前と同じ場所に残っている場合は、残っていることのみが残っています。最初の列の値の長さに依存しない列が整列する前に、常に20文字のような特定の距離を設定する方法はありますか? –

+0

「%-9s%-20s%-9s%-20s」%( "Location:"、 "10-10-10-10"、 "Revision:"、 "1")のように扱えます。 ' –

18

あなたはこのように、タブストップを指定するexpandtabsを使用することができます。

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

IronMensanのformatメソッドの答え@されます行く道。しかしとして、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' 
関連する問題