Lie wrote:
On Jun 24, 12:12 am, [EMAIL PROTECTED] wrote:
Hi All,

How do I format printed data in python?
I could not find this in the Python Reference 
Manual:http://docs.python.org/ref/print.html
Nor could I find it in Matloff's great 
tutorial:http://heather.cs.ucdavis.edu/~matloff/Python/PythonIntro.pdf

For example, how do I turn this:

512 Jun 5 2004 X11r6
22 Jan 17 2005 a2p
22 Jan 17 2005 acctcom
5374 Sep 15 2002 acledit
5664 May 13 2004 aclget
12020 May 13 2004 aclput
115734 Jun 2 2004 adb
46518 Jun 4 2004 admin
66750 Sep 16 2002 ali
1453 Sep 15 2002 alias
28150 Jun 4 2004 alog
15 May 12 2005 alstat

into this:

512        Jun   5   2004    X11r6
22         Jan   17  2005    a2p
22         Jan   17  2005    acctcom
5374       Sep   15  2002    acledit
5664       May   13  2004    aclget
12020      May   13  2004    aclput
115734     Jun   2   2004    adb
46518      Jun   4   2004    admin
66750      Sep   16  2002    ali
1453       Sep   15  2002    alias
28150      Jun   4   2004    alog
15         May   12  2005    alstat

Thank you

There is string formatting

print formatspecifier_string % data_sequence
The format specifier is similar to the one used in C's printf, and
data sequence may be tuple or list. Dictionary may also be used for
data, but it has its own way to specify string formatting since
dictionary is unordered but "indexed" by the dict key.

I have attached a prog I wrote to answer someones elses similar problem.

- Paddy.

from StringIO import StringIO
from pprint import pprint as pp
left_justified = False
debug = False

textinfile = '''I$created$a$solution$for$a$program$I$am$writing$that
makes$columns$line$up$when$outputted$to$the$command
line.$I$am$new$to$Python,$and$am$hoping$I$might$get
some$input$on$this$topic.$In$the$text$file$that$the
program$reads,$the$fields$(columns)$are$delimited$by
'dollar'$and$the$records$(lines)$are$delimited$by
newlines$'\\n'.$So$one$line$looks$like:$'''

"""

Solution to problem posed at:
  http://www.kbrandt.com/2008/06/getting-command-line-output-columns-to.html
  
Output is the following if left-justified:

# Column-aligned output:
I        created a    solution for       a         program   I    am      
writing that     
makes    columns line up       when      outputted to        the  command       
           
line.    I       am   new      to        Python,   and       am   hoping  I     
  might get
some     input   on   this     topic.    In        the       text file    that  
  the      
program  reads,  the  fields   (columns) are       delimited by                 
           
'dollar' and     the  records  (lines)   are       delimited by                 
           
newlines '\n'.   So   one      line      looks     like:                        
           

And like this if not left-justified:

# Column-aligned output:
       I created    a solution       for         a   program    I      am 
writing  that    
   makes columns line       up      when outputted        to  the command       
           
   line.       I   am      new        to   Python,       and   am  hoping       
I might get
    some   input   on     this    topic.        In       the text    file    
that   the    
 program  reads,  the   fields (columns)       are delimited   by               
           
'dollar'     and  the  records   (lines)       are delimited   by               
           
newlines   '\n'.   So      one      line     looks     like:                    
           

"""

infile = StringIO(textinfile)

fieldsbyrecord= [line.strip().split('$') for line in infile]
if debug: print "fieldsbyrecord:"; print (fieldsbyrecord)
# pad to same number of fields per record
maxfields = max(len(record) for record in fieldsbyrecord)
fieldsbyrecord = [fields + ['']*(maxfields - len(fields))
                  for fields in fieldsbyrecord]
if debug: print "padded fieldsbyrecord:"; print (fieldsbyrecord)
# rotate
fieldsbycolumn = zip(*fieldsbyrecord)
if debug: print "fieldsbycolumn:"; print (fieldsbycolumn)
# calculate max fieldwidth per column
colwidths = [max(len(field) for field in column)
             for column in fieldsbycolumn]
if debug: print "colwidths:"; print (colwidths)
# pad fields in columns to colwidth with spaces
# (Use -width for left justification,)
fieldsbycolumn = [ ["%*s" % (-width if left_justified else width, field) for 
field in column]
                   for width, column in zip(colwidths, fieldsbycolumn) ]
if debug: print "padded fieldsbycolumn:"; print (fieldsbycolumn)
# rotate again
fieldsbyrecord = zip(*fieldsbycolumn)
if debug: print "padded rows and fields, fieldsbyrecord:"; print 
(fieldsbyrecord)
# printit
print "\n# Column-aligned output:"
for record in fieldsbyrecord:
  print " ".join(record)
  

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to