python – Printing Lists as Tabular Data
python – Printing Lists as Tabular Data
There are some light and useful python packages for this purpose:
1. tabulate: https://pypi.python.org/pypi/tabulate
from tabulate import tabulate
print(tabulate([[Alice, 24], [Bob, 19]], headers=[Name, Age]))
Name Age
------ -----
Alice 24
Bob 19
tabulate has many options to specify headers and table format.
print(tabulate([[Alice, 24], [Bob, 19]], headers=[Name, Age], tablefmt=orgtbl))
| Name | Age |
|--------+-------|
| Alice | 24 |
| Bob | 19 |
2. PrettyTable: https://pypi.python.org/pypi/PrettyTable
from prettytable import PrettyTable
t = PrettyTable([Name, Age])
t.add_row([Alice, 24])
t.add_row([Bob, 19])
print(t)
+-------+-----+
| Name | Age |
+-------+-----+
| Alice | 24 |
| Bob | 19 |
+-------+-----+
PrettyTable has options to read data from csv, html, sql database. Also you are able to select subset of data, sort table and change table styles.
3. texttable: https://pypi.python.org/pypi/texttable
from texttable import Texttable
t = Texttable()
t.add_rows([[Name, Age], [Alice, 24], [Bob, 19]])
print(t.draw())
+-------+-----+
| Name | Age |
+=======+=====+
| Alice | 24 |
+-------+-----+
| Bob | 19 |
+-------+-----+
with texttable you can control horizontal/vertical align, border style and data types.
4. termtables: https://github.com/nschloe/termtables
import termtables as tt
string = tt.to_string(
[[Alice, 24], [Bob, 19]],
header=[Name, Age],
style=tt.styles.ascii_thin_double,
# alignment=ll,
# padding=(0, 1),
)
print(string)
+-------+-----+
| Name | Age |
+=======+=====+
| Alice | 24 |
+-------+-----+
| Bob | 19 |
+-------+-----+
with texttable you can control horizontal/vertical align, border style and data types.
Other options:
- terminaltables Easily draw tables in terminal/console applications from a list of lists of strings. Supports multi-line rows.
- asciitable Asciitable can read and write a wide range of ASCII table formats via built-in Extension Reader Classes.
Some ad-hoc code:
row_format ={:>15} * (len(teams_list) + 1)
print(row_format.format(, *teams_list))
for team, row in zip(teams_list, data):
print(row_format.format(team, *row))
This relies on str.format()
and the Format Specification Mini-Language.
python – Printing Lists as Tabular Data
>>> import pandas
>>> pandas.DataFrame(data, teams_list, teams_list)
Man Utd Man City T Hotspur
Man Utd 1 2 1
Man City 0 1 0
T Hotspur 2 4 2