網站首頁 編程語言 正文
前言
在用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可能是一種更好的表格數據輸出解決方案。
總結
本文介紹了兩種表格數據的打印工具:tabulate和prettytable的安裝與基本使用方法。由于表格數據本身是沒有對輸出格式進行規范化的,因此打印出來的數據會顯得比較雜亂,不利于直觀的閱讀。因此引入這兩種工具,加強了輸出結果的可讀性。這兩者在使用上各有優劣,tabulate支持更多形式的表格樣式,而prettytable則使用了更加接近于數據庫的操作形式,對于部分用戶而言有天然的生態優勢。
原文鏈接:https://blog.csdn.net/sinat_38682860/article/details/125411333
相關推薦
- 2022-09-06 詳解SQL?Server?中的?ACID?屬性_MsSql
- 2022-05-26 pandas進行數據輸入和輸出的方法詳解_python
- 2023-01-09 基于Python實現拉格朗日插值法_python
- 2023-03-01 shell耗時計算的實現_linux shell
- 2021-12-13 C++??系統IO流介紹_C 語言
- 2023-05-07 GO中什么情況會使用變量逃逸_Golang
- 2023-07-28 el-tabs 切換之前判斷是否滿足條件,不滿足則提示用戶,不能切換
- 2023-07-03 react之自定義hooks
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支