columns, values, [width=80], [mode]) |
Warning: This function has changed radically from version 0.4.0
( ('column1value1', 'column2value1', 'column3value1', 'column4value1'), ('column1value2', 'column2value2', 'column3value2', 'column4value2'), ('column1value3', 'column2value3', 'column3value3', 'column4value3'), )
The values and column headings can be any object which can be converted to a string using str()
.
80
which means the table will we wrapped to the width of a standard terminla or command line prompt. If width is set to 0
no wrapping is produced.
'terminal'
the line ending at the wrap width (specified by width) will not be added since the line will wrap around to the next line anyway. Adding the linebreak would result in blank lines appearing.
'sql'
the values are encoded in a way to represent None
as NULL
and use repr()
when str()
would be ambiguous.
For example:
#!/usr/bin/env python import sys; sys.path.append('../../../') # show python where the web modules are import web.util columns = [ 'column1Heading', 'column2Heading', 'column3Heading', 'column4Heading' ] values = [ ['column1value1', 'column2value1', 'column3value1', 'column4value1'], ['column1value2', 'column2value2', 'column3value2', 'column4value2'], ['column1value3', 'column2value3', 'column3value3', 'column4value3'], ] print "Printing the table with wrap width=0...\n" print web.util.table(columns, values, width=0) print "Printing the table with wrap width=60...\n" print web.util.table(columns, values, width=60)
The output produced is: Printing the table with wrap width=0... +----------------+----------------+----------------+----------------+ | column4Heading | column3Heading | column2Heading | column1Heading | +----------------+----------------+----------------+----------------+ | column4value1 | column3value1 | column2value1 | column1value1 | | column4value2 | column3value2 | column2value2 | column1value2 | | column4value3 | column3value3 | column2value3 | column1value3 | +----------------+----------------+----------------+----------------+ Printing the table with wrap width=60... +----------------+----------------+----------------+-------- | column4Heading | column3Heading | column2Heading | column1 +----------------+----------------+----------------+-------- | column4value1 | column3value1 | column2value1 | column1 | column4value2 | column3value2 | column2value2 | column1 | column4value3 | column3value3 | column2value3 | column1 +----------------+----------------+----------------+-------- --------+ Heading | --------+ value1 | value2 | value3 | --------+
Warning: If you don't set the wrap width and your table is wider than the terminal then the terminal will wrap the table output itself. If this happens it will wrap each induvidual line of text rather than the whole table producing output that looks more like this:
+----------------+----------------+-------------- --+----------------+ | column4Heading | column3Heading | column2Headin g | column1Heading | +----------------+----------------+-------------- --+----------------+ | column4value1 | column3value1 | column2value1 | column1value1 | | column4value2 | column3value2 | column2value2 | column1value2 | | column4value3 | column3value3 | column2value3 | column1value3 | +----------------+----------------+-------------- --+----------------+