在Python中打印键值对时如何按字段对齐打印输出

Tot*_*son 0 python

我想打印Python配置解析器对象的内容。

以下代码

for section in system_config.config.sections():
    print ("\n[" + section + "]")
    for (key, value) in system_config.config.items(section):
          print(key + "=" + value)
Run Code Online (Sandbox Code Playgroud)

版画

[GENERAL]
data_roots=[["c:\\data", "/data"] , ["d:\\data2", "/data2"]] 
test_data_folder=c:\data\atp-test-data
mount_render_python_apps=false
mount_render_modules=false
host_memory=24
host_number_of_cores=4
at_core_threads=15
Run Code Online (Sandbox Code Playgroud)

为了提高可读性,以下内容是可取的:

[GENERAL]
data_roots                = [["c:\\data", "/data"] , ["d:\\data2", "/data2"]] 
test_data_folder          = c:\data\atp-test-data
mount_render_python_apps  = false
mount_render_modules      = false
host_memory               = 24
host_number_of_cores      = 4
at_core_threads           = 15
Run Code Online (Sandbox Code Playgroud)

在C ++中,可以通过在使用流运算符“ <<”时设置第一个字段的“宽度”来实现。

问题是,如何使用Python做到这一点?

gec*_*kos 5

您可以使用{:<30}format来向左对齐最多30个长度的字符串,这是一个完整的示例:

import random
import string

def randomstr():
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for i in range(random.randint(1,30)))


for _ in range(10):
    print('{:<30} = {}'.format(randomstr(), randomstr()))
Run Code Online (Sandbox Code Playgroud)

样品输出

ohpy                           = bxqoknodteueocokveygkdxmzzxubi
rsulmvnqeyeihchanxrggorlm      = vtfeu
cvuhpavispkfbttbadt            = d
dgfcqtswqjvywosiikkjdmpyvjhoo  = ijx
ainrzifrjrkqfanrxyczs          = aluoaoizxtmcrvqv
zpujlyopvrucjqugtaamu          = pezh
eot                            = uizfrxpkjywtlxbgzhrcuuj
hfavmswauekyrtgzrhyxwmbgcyzfq  = znwfpuosysirtbkiiimzjkifbueq
qxsqzwkyafcwjrjwnwlradrudush   = barehtexzpku
hntgerexophiqbafmwfwdomas      = frtsmtakcfztlwfesiijacbmocksqq
Run Code Online (Sandbox Code Playgroud)

您可能不知道密钥字符串的最大长度。但是您可以在这种情况下maxlen = max(len(k) for k in system_config.config.keys())使用maxlen类似的格式并使用这样的格式来执行此操作'{:<{width}} = {}'.format(randomstr(), randomstr(), width=maxlen)

  • 为了参考OP,[这里是有关字符串格式的文档](https://docs.python.org/3/library/string.html#string-formatting) (2认同)