python3美化表格数据输出结果

编程之家收集整理的这篇文章主要介绍了python3美化表格数据输出结果编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

技术背景

在前面一篇博客中我们介绍过关于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',3,4)]

In [2]: print(table)
[('a',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,'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',3]

In [8]: table=[('Alice',4),('Bob',4,5)] # 表格内容的定义

In [9]: table
Out[9]: [('Alice',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,tablefmt='fancy_grid')) # 用fancy_grid的格式打印
╒═════════╤═════╤═════╤═════╤═════╕
│ index   │   0 │   1 │   2 │   3 │
╞═════════╪═════╪═════╪═════╪═════╡
│ Alice   │   1 │   2 │   3 │   4 │
├─────────┼─────┼─────┼─────┼─────┤
│ Bob     │   2 │   3 │   4 │   5 │
╘═════════╧═════╧═════╧═════╧═════╛

在这个案例中,我们分别产生了数组格式的表头和表格内容,然后用tabulate进行封装之后再打印出来。由于tabulate支持多种格式的输出,这里我们展示的仅有gridfancy_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',3] # 定义表头
tb.add_row(['Alice',4]) # 添加一行,列是column
tb.add_row(['Bob',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/

参考链接

  1. https://blog.csdn.net/qq_43901693/article/details/104920856
  2. https://blog.csdn.net/u010359398/article/details/82766474

总结

以上是编程之家为你收集整理的python3美化表格数据输出结果全部内容,希望文章能够帮你解决python3美化表格数据输出结果所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

相关文章

猜你在找的Python相关文章

一个完善的python项目,不仅需要梳理好核心代码的软件架构,还需要定义好依赖文件、编译构建文件、API接口文档、编码规范门禁等。这里我们介绍了如何用setup.py文件来完善一个最简单的python
通过python可以调用smtp第三方邮件服务接口,这使得我们可以通过python直接来发送邮件。在这个功能基础上,我们可以结合Linux的定时任务服务Crontab,来开发一些有意思的项目,比如爬虫
通过pyinstaller我们可以将一个python项目打包编译构建成一个可执行文件,然后将该可执行文件放置到一个系统路径下,使得系统可以不需要路径也能够识别到这个可执行文件,这样我们就可以仅配置一些
本文介绍了如何使用os.access的方法来判断系统文件的存在性与读、写和可执行权限等。这在日常文件操作中有着比较重要的意义,意味着我们可以先判断文件是否存在再决定是否删除系统文件,而不是直接用os.
本文中通过python库diagrams展示了基础的架构图绘制的方法,库中提供了常用的AWS和k8S等场景下常用的组件标签,使得我们用python代码也可以绘制精美清晰的架构图。这里组件之间的连接和耦
本文介绍了两种表格数据的打印工具:tabulate和prettytable的安装与基本使用方法。由于表格数据本身是没有对输出格式进行规范化的,因此打印出来的数据会显得比较杂乱,不利于直观的阅读。因此引
多进程技术是独立于算法任务本身的一种优化技术,通过python中的concurrent库,我们可以非常容易的实现多进程的任务,用来优化已有的算法。这里我们也给出了一些多进程配置信息的参考方案,在GPU
告警和异常信息的定义与处理,在网络编程项目和各种实际计算的场景中都会被用到。这里我们通过两篇博客进行了比较简单的介绍,对于没有特殊要求的用户而言,按照示例中给出的样板直接修改就能够使用。更多的时候是规