joshbaptiste
joshbaptiste

Reputation: 153

Formatting output of a list in Python

I have a Python script that prints a set of nodes from a list on a unix console by category like so

   
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

How can I format the output where the nodes are aligned regardless of console size? such as

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

Upvotes: 2

Views: 339

Answers (2)

unutbu
unutbu

Reputation: 879591

Hanging indents are possible using the 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))

yields

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

Upvotes: 4

Joao Figueiredo
Joao Figueiredo

Reputation: 3188

pprint is what you're looking for.

A more complex example:
pretty-print-lists-in-python

Upvotes: 1

Related Questions