簡體   English   中英

Python 多行 alignment 使用格式

[英]Python multiline alignment using format

背景:

當我進行數據清理時,我想按行打印我的 arg 名稱及其值。 然而,args 的名稱長度不同,它們的值也不同。 為清楚起見,我想在每行中將 arg 的名稱左對齊,並將 arg 的值右對齊。

例如,我想要如下結果:

Output:

Arg1               :           value1
Arg2222222222222222:           value2
Arg3               : value33333333333

當前方法:

假設我有 3 個參數和 3 個值。

name_list = ['Arg1','Arg2222222222222222','Arg3']
value_list = ['value1', 'value2', 'value33333333333']

使用以下代碼,我可以清楚地打印出來。

代碼:

name_list = ['Arg1','Arg2222222222222222','Arg3']
value_list = ['value1', 'value2', 'value33333333333']
padding1 = max(map(len, name_list))
padding2 = max(map(len, value_list))
print("padding1 = {}, padding2 = {}".format(padding1,padding2))
for num in range(len(name_list)):
    print('{0}: {1}'.format(name_list[num].ljust(padding1), value_list[num].rjust(padding2)))

Output:

padding1 = 19, padding2 = 16
Arg1               :           value1
Arg2222222222222222:           value2
Arg3               : value33333333333

問題:

我們可以使用更少的代碼來實現相同的目標嗎? 或者,我們可以更具體地做嗎?

謝謝你們的幫助,伙計們!

一些引文

在 python 中打印時,字符串 alignment

python 3 字符串格式化(對齊)

不多,但如果使用 fstrings,你可以這樣做

for name, value in zip(name_list, value_list):
    print(f'{name:<{padding1}}:{value:>{padding2}}')    #fstring version

<>分別代表左右 alignment。

Output 將

Arg1               :          value1
Arg2222222222222222:          value2
Arg3               :value33333333333

看到這個

使用更少的代碼,並且只缺少分隔符:

import pandas as pd

name_list = ['Arg1','Arg2222222222222222','Arg3']
value_list = ['value1', 'value2', 'value33333333333']

print(pd.DataFrame(value_list, index=name_list, columns=['']))  # [''] hides the column name (default: 0)

Output:


Arg1                           value1
Arg2222222222222222            value2
Arg3                 value33333333333

暫無
暫無

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

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