簡體   English   中英

python左右對齊?

[英]Allign left and right in python?

我已經看到一個關於證明“打印”正確的問題,但是我可以在同一行左右放置文本以獲得 --help 嗎? 它在終端中看起來像這樣:

|                                                     |
|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 ,您可以從https://stackoverflow.com/a/943921/711085獲取

這是一個非常簡單的方法:

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

我知道這是一個舊線程,但我想提出一個更優雅的解決方案,當組合文本的長度超過所需長度時,它會“優雅地失敗”。

def align_left_right(left: str, right: str, total_len: int = 80) -> str:
    left_size = max(0, total_len - len(right) - 1)  # -1 to account for the space
    return format(left, f"<{left_size}") + " " + right


def main():
    print("1.", align_left_right("|left", "right|"))
    print("2.", align_left_right("|", "right|"))
    print("3.", align_left_right("|left", "|"))
    print("4.", align_left_right("|left", "right|", total_len=20))
    print("5.", align_left_right("|left", "a longer text that doesn't fit|", total_len=20))


if __name__ == "__main__":
    main()

output:

1. |left                                                                     right|
2. |                                                                         right|
3. |left                                                                          |
4. |left         right|
5. |left a longer text that doesn't fit|

您可以使用textwrap.shorten制作一個更完整的版本,以保持總大小不變,即使一個或兩個字符串太長也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM