点击上方“算法与数据之美”,选择“置顶公众号”
更多精彩等你来!
我们在用Python编程时,经常会用到 print 这个函数,利用 print 大法我们可以作为一种交互,让我们能够随时观察程序的运行情况,也可以在遇到 Bug 的时候做一些简单的故障排除。
但是问题就是这打印出来的感觉看起来不舒服,有少许的不整齐,容易引发强迫症。比如下面打印出高校排名,直接用print逐行打印的话需要利用空格反复调整输出,利用 format 格式化控制输出能够得到一个可以接受的结果,但费时费力。
tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}" # {1:{3}^10} 1表示位置,{3}表示用第3个参数来填充,^表示居中,10表示占10个位置
print(tplt.format("排名","学校名称","总分",chr(12288)))
for i in range(num):
u=ulist[i]
print(tplt.format(u[0],u[1],u[2],chr(12288)))
而转成pandas中的DataFrame格式打印,虽然效率很高但是视觉效果较差,列名和列值完全不符合审美~
正因如此,我需要一款令人心旷神怡的 print 神器。
而它,就是 prettytable , 从字面意义上来讲就是“漂亮的表格”,这也准确地表达了这个库的作用。用上 prettytable ,我们便能够打印出整整齐齐的表格框,如下所示,
完美,这个表格框完美的根治了我的强迫症!排名,学校名称,总分三列全部整整齐齐的。那么可能又有同学会说,“这输出的有框,我不想要框。”,利用这个第三方库,我们依然可以做到,只需要改变制表的风格。
那么我们如何来使用这个库,非常容易!首先是按行输入,先用 field_names 设置列名,再用 add_row 逐行加入数据, 若要批量输入,可以利用简单的循环实现。
from prettytable import PrettyTable
x = PrettyTable()
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_row(["Adelaide",1295, 1158259, 600.5])
x.add_row(["Brisbane",5905, 1857594, 1146.4])
x.add_row(["Darwin", 112, 120900, 1714.7])
x.add_row(["Hobart", 1357, 205556, 619.5])
x.add_row(["Sydney", 2058, 4336374, 1214.8])
x.add_row(["Melbourne", 1566, 3806092, 646.9])
x.add_row(["Perth", 5386, 1554769, 869.4])
按列输入的方法与行基本一致,add_column 就可以做到,且均能实现以下的效果。
除了手动输入,我们还可以选择从csv文件以及数据库导入。
from prettytable import from_csv
fp = open("myfile.csv", "r")
mytable = from_csv(fp)
fp.close()
import sqlite3
from prettytable import from_cursor
connection = sqlite3.connect("mydb.db")
cursor = connection.cursor()
cursor.execute("SELECT field1, field2, field3 FROM my_table")
mytable = from_cursor(cursor)
另外我们还可以利用 x.get_string 我们可以自由选择打印个别列。
还有更多关于 prettytable 的使用信息可以查询官方文档,点击「 阅读原文 」即可直达~
往期精彩
我写了个 Chrome 插件,一键下载 Pornhub 视频!