Python美化表格数据输出的两个实用工具:tabulate与prettytable
本文介绍在Python中处理表格数据时,如何利用tabulate和prettytable两个库美化控制台输出。通过对比两种工具的安装、基本用法及特性,帮助开发者提升数据展示的可读性,根据需求选择更合适的方案。
前言
在使用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)]当直接打印该表格数据时,输出效果往往不尽如人意。尽管从中仍能提取到相同的信息,但这种原始的数据展示方式极大地阻碍了从打印输出中直观获取数据的能力,体验较差。
1.使用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"2.使用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安装完成后,我们通过一个Python文件的示例来展示其具体用法。
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则采用了更接近数据库的操作形式,对于部分用户群体而言具有天然的生态优势。
到此这篇关于python可以美化表格数据输出结果的两个工具的文章就介绍到这了,更多相关python美化表格输出内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













