Python打印带有嵌套在dict中的列表的格式化文本

时间:2013-07-26 19:52:42

标签: python list dictionary formatting

我正在编写一个脚本,将一些系统信息输出到文本文件, 我得到了我需要的所有信息,但我偶然发现了一个问题,

这是dict的一部分:

machine_info = {
    ...
    'processors': get_processors(),
    ...  
}

get_processors()返回所有机器处理器的列表,

现在问题 - 我想打印处理器数据,我现在的打印模板是:

print """...
Processor(s):\t%(processors)s
...""" % machine_info

显然它不起作用,它打印整个列表,我想打印格式化,
以某种方式看起来像这样:

...
Processor(s):   processor_1_info
                processor_2_info
                ...
...

我怎样能设法做到这一点? 有没有比使用\ t更好的格式化文本的方法,所以它会更灵活? 还有,有更好的方法来打印信息吗?考虑到最后它将输出到文本文件,

感谢。

1 个答案:

答案 0 :(得分:3)

这样的事情:

processors_info = "\n\t\t\t".join(machine_info['processors'])
print "Processor(s):\t{}".format(processors_info)

<强>演示:

>>> info = ['processor_1_info', 'processor_2_info']
>>> processors_info = "\n\t\t\t".join(info)
>>> print "Processor(s):\t{}".format(processors_info)
Processor(s):   processor_1_info
                processor_2_info

使用string formatting的另一种方式:

info = ['processor_1_info', 'processor_2_info', 'processor_3_info']
#info = machine_info['processors'] for your code.
print "Processor(s):{:>20s}".format(info[0])
for item in info[1:]:
    print "{:>33s}".format(item)

<强>输出:

Processor(s):    processor_1_info
                 processor_2_info
                 processor_3_info