2012-03-09 95 views
4

我已經看到了一個關於證明「打印」權限的問題,但是我可以在同一行上左右文本,對於--help?它會看起來像這樣的終端:在python中左右對齊嗎?

|              | 
|Left           Right| 
|              | 
+0

您是否將ArgParse用於命令行解析器? – 2012-03-09 19:58:08

+0

對於正確的理由,您首先需要知道您的總輸出空間有多寬。你做? – delnan 2012-03-09 19:58:36

回答

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,'(注意尾隨逗號)嗎? – 2012-03-09 20:06:15

+0

漂亮。我評論過它,並對它進行了編輯,使其可以在交互式Python提示符以及python2和python3中運行。確切準確地將'50'替換爲您從http://stackoverflow.com/a/943921/711085獲得的值。 – ninjagecko 2012-03-09 20:06:20

+0

@andrewcooke:'\ b'「後退:光標移動到行的開頭,所以實際上我在打印出'Left'時覆蓋了行,可以使用'print',不過@FJ。 – Blender 2012-03-09 20:21:45

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) 
'             '