前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >赏心悦目的Print

赏心悦目的Print

作者头像
老肥码码码
发布2020-01-17 15:56:20
6530
发布2020-01-17 15:56:20
举报

点击上方“算法与数据之美”,选择“置顶公众号”

更多精彩等你来!

我们在用Python编程时,经常会用到 print 这个函数,利用 print 大法我们可以作为一种交互,让我们能够随时观察程序的运行情况,也可以在遇到 Bug 的时候做一些简单的故障排除。

但是问题就是这打印出来的感觉看起来不舒服,有少许的不整齐,容易引发强迫症。比如下面打印出高校排名,直接用print逐行打印的话需要利用空格反复调整输出,利用 format 格式化控制输出能够得到一个可以接受的结果,但费时费力。

代码语言:javascript
复制
    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 逐行加入数据, 若要批量输入,可以利用简单的循环实现。

代码语言:javascript
复制
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文件以及数据库导入。

代码语言:javascript
复制
from prettytable import from_csv
fp = open("myfile.csv", "r")
mytable = from_csv(fp)
fp.close()
代码语言:javascript
复制
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 的使用信息可以查询官方文档,点击「 阅读原文 」即可直达~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与数据之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档