在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没有什么特别之处)。