好用的小工具 tabulate
Moevis
在找 python 如何输出 markdown 表格的时候发现一个小工具 tabulate,感觉功能还不错。
用法是这样的,比如我们有一个 pandas 的 dataframe
import pandas as pd
from tabulate import tabulate
carsales = pd.DataFrame([[970, 1010, 1015, 1008],
[975, 1020, 1002, 1035],
[975, 985, 995, 999]],
index=['Toyota', 'VW', 'GM'], columns=[2013, 2014, 2015, 2016])
那么可以这样在命令行打印表格
print(tabulate(carsales, headers="keys"))
输出如下:
2013 2014 2015 2016
------ ------ ------ ------ ------
Toyota 970 1010 1015 1008
VW 975 1020 1002 1035
GM 975 985 995 999
如果希望加边框线,可以这样:
print(tabulate(carsales, tablefmt="grid", headers="keys"))
+--------+--------+--------+--------+--------+
| | 2013 | 2014 | 2015 | 2016 |
+========+========+========+========+========+
| Toyota | 970 | 1010 | 1015 | 1008 |
+--------+--------+--------+--------+--------+
| VW | 975 | 1020 | 1002 | 1035 |
+--------+--------+--------+--------+--------+
| GM | 975 | 985 | 995 | 999 |
+--------+--------+--------+--------+--------+
如果希望输出 markdown 支持的样式,就把 tablefmt 参数改为 pipe:
print(tabulate(carsales, tablefmt="pipe", headers="keys"))
| | 2013 | 2014 | 2015 | 2016 |
|:-------|-------:|-------:|-------:|-------:|
| Toyota | 970 | 1010 | 1015 | 1008 |
| VW | 975 | 1020 | 1002 | 1035 |
| GM | 975 | 985 | 995 | 999 |
tablefmt 参数还有很多种支持,像 ‘plain’, ‘simple’, ‘grid’, ‘fancy_grid’, ‘latex’, ‘pipe’, ‘orgtbl’, ‘rst’, ‘mediawiki’ 之类的可以尽情尝试一下。
当然,如果不用 pandas,直接传入一个二维数组也是可以的:
print(tabulate([[1, 2.34], [-56, "8.999"], ["2", "10001"]]))
--- ---------
1 2.34
-56 8.999
2 10001
--- ---------