赏心悦目的Print

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

更多精彩等你来!

我们在用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 的使用信息可以查询官方文档,点击「 阅读原文 」即可直达~

往期精彩

资深抱佛脚玩家的自我修养

十分钟,用Python带你看GDP变迁

我写了个 Chrome 插件,一键下载 Pornhub 视频!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值