在Python中格式化列表的输出

时间:2011-11-03 18:59:36

标签: python curses

我有一个Python脚本,可以按类别在unix控制台上的列表中打印一组节点,如此

   
node_name: 1) node_mgt  2) node103  3) node106  4) node107  5) node109  6) node110  7)     node115  8) node116  9) node117  10) node120  11) node121  12) node122  
node_sub1: 170) node126  171) node210  172) node304  173) node413  174) node425  175)     node517  176) node609

无论控制台大小如何,如何格式化节点对齐的输出?比如

node_name: 1) node_mgt  2) node103  3) node106  4) node107  5) node109  6) node110 
           7) node115  8) node116  9) node117  10) node120  11) node121  12) node122        
node_sub1: 170) node126  171) node210  172) node304  173) node413  174) node425 
           175) node517  176) node609

2 个答案:

答案 0 :(得分:4)

使用textwrap module

可以进行悬挂缩进
import textwrap

lines=['node_name: 1) node_mgt  2) node103  3) node106  4) node107  5) node109  6) node110  7) node115  8) node116  9) node117  10) node120  11) node121  12) node122  ',
'node_sub1: 170) node126  171) node210  172) node304  173) node413  174) node425  175) node517  176) node609']
for line in lines:
    print(textwrap.fill(line,initial_indent='',subsequent_indent=' '*11,width=84))

产量

node_name: 1) node_mgt  2) node103  3) node106  4) node107  5) node109  6) node110
           7) node115  8) node116  9) node117  10) node120  11) node121  12) node122
node_sub1: 170) node126  171) node210  172) node304  173) node413  174) node425
           175) node517  176) node609

答案 1 :(得分:1)

pprint正是您要找的。

一个更复杂的例子:
pretty-print-lists-in-python