python可以美化表格数据输出结果的两个工具
作者:Python?学习者 发布时间:2022-06-05 02:33:32
前言
在用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
安装完成后我们用一个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可能是一种更好的表格数据输出解决方案。
来源:https://blog.csdn.net/sinat_38682860/article/details/125411333


猜你喜欢
- 使用expdp时,遇到”ORA-39002、ORA-39070......”连续报错。1、 遇到的问题C:\Users\Admi
- 前言字符串作为一种重要的Python基本数据类型,在数据处理中发挥着不可或缺的作用,如果对它的方法能够灵活使用,能够达到事半功倍的效果。下面
- 介绍这道题是这样的,有一个二叉树,让求出这颗Bt树里面最大的宽度是有几个节点,同时还要求出最大宽度的这些节点在第几层?比如:下面这颗树,它每
- #!/usr/bin/env python# -*- coding: utf-8 -*-# @File : 自实现一个线性回归.py# @A
- 1.思路在网上查找了半天,基本都是提取word中文字的,没有找到可以把word中的图片提取出来的方法。一个巧合的情况下,发现将word的后缀
- python open() 函数以指定模式打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。w 模
- 前言做数据分析的时候通常我们并不是对真个excel文件进行操作,换言之,每一列都是一个特征,我们需要针对分析。遇到这类问题的时候,我们通常想
- 前言NSQ是Go语言编写的,开源的分布式消息队列中间件,其设计的目的是用来大规模地处理每天数以十亿计级别的消息。NSQ 具有分布式和去中心化
- javascript函数的定义1:调用关键字function来构造,如:function distance(x1,x2,y1,y2){var
- 本文实例为大家分享了python实现在线翻译的具体代码,供大家参考,具体内容如下具体效果请看图代码:import urllib.reques
- 在Pycharm里设置断点如下:这样启动debug模式后(Shift+F9),程序就会暂停在断点处。如上面所示,暂停在第15行处,可以看到程
- 1. 使用性能分析器Golang提供了内置的性能分析工具 pprof,可以帮助您分析和优化应用程序的性能瓶颈。下面是使用 
- mtx文件是按照稀疏矩阵格式存储的矩阵数据,可以按照以下步骤读取:1、安装scanpy包pip install scanpy2、文件读取im
- 第一:编写限制搜索范围的查询语句。众所周知,在数据库查询的时候返回记录的多少直接关系到查询的效率。所以,在客户端通过一定的条件语句,限制搜索
- 本文实例讲述了Python实现计算文件MD5和SHA1的方法。分享给大家供大家参考,具体如下:不多说,直接源码:#file md5impor
- Go 单元测试工具测试分为4个层次单元测试:对代码进行测试集成测试:对一个服务的接口测试端到端测试(链路测试):从一个链路的入口输入测试用例
- 目录1.部分转义字符2.slice 切片读取字符串3.调用split()方法分割字符串 ASCII字母4.与字母大小写有关方法5.搜索查找字
- 在用mysql时(show tables),有时候需要查看表和字段的相关信息(表与某字段是否存在等.)~~而PHP提供了这样的相关函数,如:
- 查询语言通过在查询表格中键入单词或短语,然后单击按钮执行查询,就可以在 Web 站点中搜索任意的单词或短语(例如,查询表格示例
- 一、背景我们项目开发人员写的文档都是markdown文件。对于其它组的同学要进行阅读不是很方便。每次编辑完markdown文件,我都是用软件