Python module for creating colorful formatted ASCII tables.
This package combines the texttable and the blessed package; and thus, Blessedtable.
pip install blessedtable
Inializing the table with default parameters will print the a table without any formatting. To know more about structuring the ascii table follow this link
from blessedtable import Blessedtable
table = Blessedtable()
table.set_deco(15)
table.set_cols_align(["l", "r", "c"])
table.set_cols_valign(["t", "m", "b"])
table.add_rows([["Name", "Age", "Nickname"],
["Mr\nXavier\nHuon", 32, "Xav'"],
["Mr\nBaptiste\nClement", 1, "Baby"],
["Mme\nLouise\nBourgeau", 28, "Lou\n\nLoue"]])
print(table.draw())
For styling blessedtable
uses three parameters over textable
. These are border_format, header_format, and column_format
.
border_format
needs to be either None
, or of type str
header_format
needs to be either None
, or of type str
, or a list
of strings
column_format
needs to be either None
, or of type str
, or a list
of strings
Note: The strings should be formatting strings. Examples are given below.
'normal_on_normal' # text and background both have default color
'red' # text color is red, background has default color
'red_on_white' # text color is red, background is white
'italic_red_on_blue' # text italic and red, and background is white
All the color names should be by name, the color options can be found here. To know more about blessed
's formatting, follow this link
The three parameters can be set either while initializing or using setters.
table = Blessedtable(header_format='green_on_blue', border_format='blue', column_format='blue_on_rosybrown2')
#or
table = Blessedtable()
table.set_deco(15)
table.set_cols_align(["l", "r", "c"])
table.set_cols_valign(["t", "m", "b"])
table.add_rows([["Name", "Age", "Nickname"],
["Mr\nXavier\nHuon", 32, "Xav'"],
["Mr\nBaptiste\nClement", 1, "Baby"],
["Mme\nLouise\nBourgeau", 28, "Lou\n\nLoue"]])
table.header_format = 'green_on_blue'
table.border_format = 'blue'
table.column_format = 'blue_on_rosybrown2'
print(table.draw())
To achieve different colors for the columns for both header and the rows, pass a list having format string for each of the columns.
Note: The number of elements in the list should be equal to the number of columns in a row; each element (format string) correspomds to successive columns. If header_format
is None
then it inherits the column_format
and vice versa. If you don't want it to inherit the styles, set the header_format
or column_format
to "normal_on_normal"
hf = ['green', 'italic_blue', 'purple']
cf = ['white_on_green', 'italic_orange_on_blue', 'teal']
table.header_format = hf
table.border_format = 'yellow'
table.column_format = cf
print(table.draw())