2012-03-09 12 views
4

私は '印刷'の権利を正当化することについて質問しましたが、--helpのために同じ行にテキストを左右に置くことができますか?これは、ターミナルで次のようになりたい:Pythonの左と右に配置しますか?

|              | 
|Left           Right| 
|              | 
+0

コマンドラインパーサーにはArgParseを使用していますか? –

+0

右寄せについては、まず総出力スペースの幅を知る必要があります。あなたは? – delnan

答えて

4

を私はあなたがこのためにsys.stdoutを使用することができると思う:

import sys 

def stdout(message): 
    sys.stdout.write(message) 
    sys.stdout.write('\b' * len(message)) # \b: non-deleting backspace 

def demo(): 
    stdout('Right'.rjust(50)) 
    stdout('Left') 
    sys.stdout.flush() 
    print() 

demo() 

あなたはhttps://stackoverflow.com/a/943921/711085

から取得することができ、正確なコンソール幅、と 50を置き換えることができますここで
+0

'print message '(末尾にカンマ)を使用できませんでしたか? –

+0

nifty。私はそれをコメントして編集したので、インタラクティブなpythonプロンプトとpython2とpython3の両方で動作します。正確な情報を得るには、「50」をhttp://stackoverflow.com/a/943921/711085から得られる値に置き換えてください。 – ninjagecko

+0

@andrewcooke: '\ b'"は巻き戻します:行の先頭にカーソルがあるので、 'Left'を印刷するときに実際に行を上書きしています。 – Blender

3

かなり簡単な方法です:

>>> left, right = 'Left', 'Right' 
>>> print '|{}{}{}|'.format(left, ' '*(50-len(left+right)), right) 
|Left           Right| 

関数として:

def lr_justify(left, right, width): 
    return '{}{}{}'.format(left, ' '*(width-len(left+right)), right) 

>>> lr_justify('Left', '', 50) 
'Left            ' 
>>> lr_justify('', 'Right', 50) 
'            Right' 
>>> lr_justify('Left', 'Right', 50) 
'Left           Right' 
>>> lr_justify('', '', 50) 
'             ' 
関連する問題