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