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

标签:python,美化,表格,数据,输出,工具
0
投稿

猜你喜欢

  • MySQL批量插入和唯一索引问题的解决方法

    2024-01-23 20:09:23
  • oracle怎样修改表名、列名、字段类型、添加表列、删除表列

    2010-07-23 11:10:00
  • python 匹配url中是否存在IP地址的方法

    2023-04-13 14:29:08
  • jquery实用技巧之输入框提示语句

    2024-04-22 12:49:10
  • 利用XMLBean轻轻松松读写XML

    2008-09-04 11:25:00
  • 一行CSS代码为网站加上奥运主题

    2008-07-20 12:33:00
  • 在Python中使用Neo4j数据库的教程

    2024-01-15 00:40:54
  • Python 基于TCP 传输协议的网络通信实现方法

    2023-06-18 22:04:01
  • Linux下彻底删除Mysql 8.0服务的方法

    2024-01-14 06:38:04
  • PHP魔术方法__ISSET、__UNSET使用实例

    2024-05-22 10:09:08
  • Matlab如何实现矩阵复制扩充

    2023-10-13 15:46:52
  • Python手动实现Hough圆变换的示例代码

    2023-11-03 03:12:42
  • Python 余弦相似度与皮尔逊相关系数 计算实例

    2022-02-24 01:32:52
  • Java基于redis和mysql实现简单的秒杀(附demo)

    2024-01-16 16:55:13
  • 手把手教你导入Go语言第三方库

    2024-04-28 10:46:13
  • Python zip()函数用法实例分析

    2022-10-28 21:39:53
  • SQL Server 总结复习 (二)

    2024-01-22 23:14:50
  • 原来CSS也可以把IE6弄死

    2007-08-14 09:30:00
  • PHP结构型模式之代理模式

    2023-05-25 06:55:34
  • python3.7 打包成exe程序方式(只需两行命令)

    2023-01-26 14:29:34
  • asp之家 网络编程 m.aspxhome.com