【问题标题】:Allign left and right in python?在python中左右对齐?
【发布时间】:2012-03-27 06:16:04
【问题描述】:

我看到了一个关于证明“打印”正确的问题,但是我可以在同一行左右放置文本以获取 --help 吗?它在终端中看起来像这样:

|                                                     |
|Left                                            Right|
|                                                     |

【问题讨论】:

  • 您是否将 ArgParse 用于命令行解析器?
  • 对于右对齐,您首先需要知道您的总输出空间有多大。你呢?

标签: python


【解决方案1】:

这是一个非常简单的方法:

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

【讨论】:

    【解决方案2】:

    我认为您可以为此使用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 替换为确切的控制台宽度,您可以从https://stackoverflow.com/a/943921/711085 获得该宽度

    【讨论】:

    • 你不能使用print message,(注意尾随逗号)吗?
    • 漂亮。我已经对其进行了评论,并对其进行了编辑,因此它可以在交互式 python 提示符以及 python2 和 python3 中运行。将50 替换为您从stackoverflow.com/a/943921/711085 获得的值以获得准确度。
    • @andrewcooke: \b "rewinds: 光标到行首,所以当我打印出Left时,我实际上覆盖了行。你可以使用print,不过。@FJ 做到了。
    • 对,但没必要乱用 sys.stdout,你仍然可以使用惯用的 python print(没有什么特别的需要 sys.stdout 的 \b)。
    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多