python3美化表格数据输出结果的实现代码
作者:陆言君的博客 发布时间:2023-08-28 10:04:03
技术背景
在前面一篇博客中我们介绍过关于python的表格数据处理方案,这其中的工作重点就是对表格类型的数据进行梳理、计算和展示,本文重点介绍展示
这个方面的工作。首先我们看一个案例,定义一个数组形式的表格数据:
[dechin@dechin-manjaro table]$ ipython
Python 3.8.5 (default, Sep 4 2020, 07:30:14)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: table=[('a',1,2,3),('b',2,3,4)]
In [2]: print(table)
[('a', 1, 2, 3), ('b', 2, 3, 4)]
当我们直接打印这个表格数据的时候,发现效果非常的难看。虽然我们可以从这个表格中获取到同样的信息,但是这种数据展示的方法对于我们直接从打印输出中获取数据是非常不利的。
使用tabulate美化表格输出
首先介绍一个工具tabulate,可以直接打印数组格式的表格数据,并且有多种输出格式可选。安装方法同样可以用pip来进行管理:
[dechin@dechin-manjaro table]$ python3 -m pip install tabulate
Requirement already satisfied: tabulate in /home/dechin/anaconda3/lib/python3.8/site-packages (0.8.9)
安装很容易,也没有其他依赖。接下来我们用ipython来展示一些基本用法:
[dechin@dechin-manjaro table]$ ipython
Python 3.8.5 (default, Sep 4 2020, 07:30:14)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.19.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from tabulate import tabulate
In [2]: import numpy as np
In [3]: header=['index']+list(range(4)) # 表头的定义
In [4]: header
Out[4]: ['index', 0, 1, 2, 3]
In [8]: table=[('Alice',1,2,3,4),('Bob',2,3,4,5)] # 表格内容的定义
In [9]: table
Out[9]: [('Alice', 1, 2, 3, 4), ('Bob', 2, 3, 4, 5)]
In [11]: print(tabulate(table,headers=header,tablefmt='grid')) # 用grid的格式打印表格内容
+---------+-----+-----+-----+-----+
| index | 0 | 1 | 2 | 3 |
+=========+=====+=====+=====+=====+
| Alice | 1 | 2 | 3 | 4 |
+---------+-----+-----+-----+-----+
| Bob | 2 | 3 | 4 | 5 |
+---------+-----+-----+-----+-----+
In [12]: print(tabulate(table,headers=header,tablefmt='fancy_grid')) # 用fancy_grid的格式打印
╒═════════╤═════╤═════╤═════╤═════╕
│ index │ 0 │ 1 │ 2 │ 3 │
╞═════════╪═════╪═════╪═════╪═════╡
│ Alice │ 1 │ 2 │ 3 │ 4 │
├─────────┼─────┼─────┼─────┼─────┤
│ Bob │ 2 │ 3 │ 4 │ 5 │
╘═════════╧═════╧═════╧═════╧═════╛
在这个案例中,我们分别产生了数组格式的表头和表格内容,然后用tabulate进行封装之后再打印出来。由于tabulate
支持多种格式的输出,这里我们展示的仅有grid
和fancy_grid
两种个人比较喜欢的格式。其他类型的格式还有:
"plain"
"simple"
"github"
"grid"
"fancy_grid"
"pipe"
"orgtbl"
"jira"
"presto"
"psql"
"rst"
"mediawiki"
"moinmoin"
"youtrack"
"html"
"latex"
"latex_raw"
"latex_booktabs"
"textile"
使用prettytable美化输出
类似于tabulate的,prettytable的主要目的也是规范化的美化表格数据的输出,但是在使用方法上略有差异,在不同的场景下可以使用不同的方案。这里我们先看一下prettytable的安装,同样可以使用pip来进行管理:
[dechin@dechin-manjaro table]$ python3 -m pip install prettytable
Collecting prettytable
Downloading prettytable-2.1.0-py3-none-any.whl (22 kB)
Requirement already satisfied: wcwidth in /home/dechin/anaconda3/lib/python3.8/site-packages (from prettytable) (0.2.5)
Installing collected packages: prettytable
Successfully installed prettytable-2.1.0
安装完成后我们用一个py文件的示例来展示其用法:
# pt_test.py
from prettytable import PrettyTable
tb = PrettyTable() # 生成表格对象
tb.field_names = ['Index', 0, 1, 2, 3] # 定义表头
tb.add_row(['Alice',1,2,3,4]) # 添加一行,列是column
tb.add_row(['Bob',2,3,4,5])
print (tb) # 打印输出
代码的执行结果如下:
[dechin@dechin-manjaro table]$ python3 pt_test.py
+-------+---+---+---+---+
| Index | 0 | 1 | 2 | 3 |
+-------+---+---+---+---+
| Alice | 1 | 2 | 3 | 4 |
| Bob | 2 | 3 | 4 | 5 |
+-------+---+---+---+---+
由于使用的案例跟上面介绍的tabulate是一样的,所以输出结果也类似,相当于多了一种输出格式。但是除了输出格式之外,我们发现prettytable可以很好的利用行和列的添加的形式来进行表格操作,操作习惯更接近于数据库的操作形式,因此对于经常使用数据库的人而言,prettytable可能是一种更好的表格数据输出解决方案。
总结概要
本文介绍了两种表格数据的打印工具:tabulate和prettytable的安装与基本使用方法。由于表格数据本身是没有对输出格式进行规范化的,因此打印出来的数据会显得比较杂乱,不利于直观的阅读。因此引入这两种工具,加强了输出结果的可读性。这两者在使用上各有优劣,tabulate支持更多形式的表格样式,而prettytable则使用了更加接近于数据库的操作形式,对于部分用户而言有天然的生态优势。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/table.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/
参考链接https://blog.csdn.net/qq_43901693/article/details/104920856https://blog.csdn.net/u010359398/article/details/82766474
来源:https://www.cnblogs.com/dechinphy/p/table.html


猜你喜欢
- opencv 进行任意形状目标识别,供大家参考,具体内容如下工作中有一次需要在简单的图上进行目标识别,目标的形状不固定,并且存在一定程度上的
- 本文实例讲述了Python实现统计给定列表中指定数字出现次数的方法。分享给大家供大家参考,具体如下:直接看实现:#!usr/bin/env
- 比如我们有一张school表,里面有一个字段county_name,现在我们要查询county_name字段中包含a-w字母和数字以外字符的
- CONVERT的使用方法: 格式: CONVERT(data_type,expression[,style]) 说明: 此样式一般在时间类型
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()一,$.get(url,[da
- 这篇文章主要介绍了Python @property装饰器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 一般的网站会有很多页面,面包屑导航可以大大改善用户寻找他们的路径的方法。就可用性而言,面包屑可以减少一个网站的用户返回上一级页面的操作次数,
- 学习目标Python 是简洁、易学、面向对象的编程语言。它不仅拥有强大的原生数据类型,也提供了简单易用的控制语句。本节的主要目标是介绍 Py
- 1、HTML模板和字符串模板HTML模板:直接在HTML页面挂载的模板。(即非字符串模板)非字符串模板:在单文件里用 <templat
- 前言在本文中,我们将介绍一些常见的分布并通过Python 代码进行可视化以直观地显示它们。概率和统计知识是数据科学和机器学习的核心;&nbs
- 一、前言很多网站提供视频转GIF的功能,但要么收费要么有广告实际上我们通过python,几行代码就能够实现视频转gif二、教程1. 安装必备
- 虽然ting88没有注册的用户不能下载歌曲,但搞定它也非难事啊:)进入www.ting88.com的网站,把歌手专辑页面的URL复制到文本框
- 本文讲述了mysql索引必须了解的几个重要问题。分享给大家供大家参考,具体如下:1、索引是做什么的?索引用于快速找出在某个列中有一特定值的行
- 粒子群算法粒子群算法源于复杂适应系统(Complex Adaptive System,CAS)。CAS理论于1994年正式提出,CAS中的成
- 目录简单的验证码简单的登录页面我们经常在登录一个网站,或者注册的时候需要输入一个验证码,有时候觉得很烦,因为有些验证码不仅复杂还看不清,许多
- 位置参数这是一个求等差数列和的函数,使用必需要传入一个参数n,这就是位置参数def sum(n): sum=0 &
- Python 字符串格式化使用 "字符 %格式1 %格式2 字符"%(变量1,变量2),%格式表示接受变量的类型。简单的
- 一, 创建用户: 命令:CREATE USER 'usern
- 本文实例为大家分享了python实现决策树分类算法的具体代码,供大家参考,具体内容如下1、概述决策树(decision tree)——是一种
- 隐藏你的.php文件 隐藏你的.php文件 今天做PHP在线手册镜像的时候看到了这个方法,哈哈,以前都没有注意到,所以说,手册是