在python中左右对齐?

在python中左右对齐?,python,Python,我看到了一个关于证明“打印”正确性的问题,但是我可以让文本左右在同一行上,来寻求帮助吗?在候机楼里是这样的: | | |Left Right| | | 我想您可以使用sys.stdout来实现这一点: i

我看到了一个关于证明“打印”正确性的问题,但是我可以让文本左右在同一行上,来寻求帮助吗?在候机楼里是这样的:

|                                                     |
|Left                                            Right|
|                                                     |

我想您可以使用
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()

您可以将
50
替换为精确的控制台宽度,您可以从获得该宽度。这里有一个非常简单的方法:

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

您是否在命令行解析器中使用ArgParse?为了获得正确的解释,您首先需要知道您的总输出空间有多宽。你能吗?你不能用
打印消息,
(注意后面的逗号)?漂亮。我已经对它进行了评论,并对其进行了编辑,使其在交互式python提示符下工作,同时在python2和python3中工作。将
50
替换为从中获得的精确值。@andrewcooke:the
\b
“倒带:将光标移到行的开头,这样当我打印出
Left
时,实际上是在覆盖行。”。不过,您可以使用
打印
@FJ没有。对,但是没有必要乱用sys.stdout,您仍然可以使用惯用的python打印(需要sys.stdout的\b没有什么特别之处)。