[英]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.