Python Library: tabulate

I prefer to use Restructured Text for my posts, but drawing tables in Restructured text has always been tricky for me. Getting the columns right, drawing and aligning the bar characters is a frustrating exercise for me.

The best to draw tables is to then generate it. I've tried ascii art table maker and I have not been very impressed or successful with it.

I tried a python library called tabulate [1] which can be used to print the table in restructed text format. The table could easily be constructed using python data structures like list.

Here is an example table of Graph applications, which shows the concept graphs, their vertices and edges.

graph vertex edge
communication telephone, computer fiber optic cable
circuit gate, register, processor wire
mechanical joint rod, beam, spring
financial stock, currency transactions
transportation street intersection, airport highway, airway route
internet class C network connection
game board position legal move
social relationship person, actor friendship, movie cast
neural network neuron synapse
protein network protein protein-protein interaction
molecule atom bond

This table was generated using this python program.

python/tabulate_example.py (Source)

from tabulate import tabulate

table_header = ["graph", "vertex", "edge"]

items = [
    ["communication", "telephone, computer", "fiber optic cable"],
    ["circuit", "gate, register, processor", "wire"],
    ["mechanical", "joint", "rod, beam, spring"],
    ["financial", "stock, currency", "transactions"],
    ["transportation", "street intersection, airport", "highway, airway route"],
    ["internet", "class C network", "connection"],
    ["game", "board position", "legal move"],
    ["social relationship", "person, actor", "friendship, movie cast"],
    ["neural network", "neuron", "synapse"],
    ["protein network", "protein", "protein-protein interaction"],
    ["molecule", "atom", "bond"]]

print(tabulate(items, headers=table_header, tablefmt="rst"))

I landed upon tabulate when another python library by name PTable [2] did not provide a restructured text specific formatting. If you just prefer ASCII tables, then that's a convenient library as well.

[1] https://bitbucket.org/astanin/python-tabulate
[2] https://ptable.readthedocs.io/en/latest/tutorial.html

Comments

Comments powered by Disqus