[Tutor] max(len(item)) for cols
János Juhász
janos.juhasz at VELUX.com
Mon Jun 20 09:24:10 CEST 2005
Dear Alan,
similar :)
I have scripted a small sql e-mail reporting simplified from
# written by Mike Brown
# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/148061
import string
def TableStr(labels, rows, delim=' | '):
columns = zip(*[labels] + rows)
# get the maximum of each column by the string length of its items
maxWidths = [max([len(str(cell)) for cell in column]) for column in
columns]
result = delim.join(
[str.ljust(str(item),width) for (item,width) in
zip(labels,maxWidths)]
)+'\n'
result += '='*(sum(maxWidths) + len(delim)*(len(columns)-1))+'\n'
for row in rows:
result += delim.join(
[str.ljust(str(item),width) for (item,width) in
zip(row,maxWidths)]
)+'\n'
return result
data = """\
WH,Stock,Qty
01,1001,10
01,1002,23
02,1432,4
03,This is long stockcode,100"""
table = string.split(data, '\n')
labels = string.split(table[0], ',')
rows = [string.split(row, ',') for row in table[1:]]
print ''
print TableStr(labels, rows, delim=' | ')
It makes beautiful tables from sql queries into e-mail as warning.
That I don't know is the asterisk in zip(*[labels] + rows)
I wasn't able to find in the python reference what it means.
May you help me in that ?
Yours sincerely,
______________________________
János Juhász
"Alan G"
<alan.gauld at freenet.co
.uk> To
János Juhász <janos.juhasz at VELUX.com>, <tutor at python.org>
cc
2005.06.17 19:59
Subject
Re: [Tutor] max(len(item)) for cols
I have a 2D array:
>>>[['1', '2 ', '3 '], ['longer ', 'longer ', 'sort']]
> How can I get what is the max(len(item)) for the columns ?
> I would like to get a list with the max_col_width values.
>>> tda = [['1', '2 ', '3 '], ['longer ', 'longer ',
'sort']]
>>> mcw = [[len(r) for r in c] for c in tda]
>>> mcw
[[1, 2, 5], [11, 10, 4]]
>>> mcw = [max([len(r) for r in c]) for c in tda]
>>> mcw
[5, 11]
>>> widest = max(mcw)
>>> widest
11
Is that what you mean?
Alan G
Author of the Learn to Program web tutor
http://www.freenetpages.co.uk/hp/alan.gauld
More information about the Tutor
mailing list