網(wǎng)站首頁 編程語言 正文
楔子
我們用 MySQL 客戶端查詢數(shù)據(jù)的時候,是以下面這種格式顯示的:
內(nèi)容展示的非常漂亮,而 Python 有一個第三方模塊叫 prettytable,專門用來將數(shù)據(jù)以上面這種格式輸出,我們來看一下用法。
添加表頭、添加行、添加列
類似于數(shù)據(jù)庫中的表,由表頭(或者說字段名),以及每一行的內(nèi)容組成。
from?prettytable?import?PrettyTable
#?傳入的?name、age、country?相當于表頭
tb?=?PrettyTable(["name",?"age",?"country"])
#?調(diào)用?add_row?添加行記錄
tb.add_row(["Jack?Morrison",?49,?"America"])
tb.add_row(["Shimada?Genji",?35,?"Japan"])
tb.add_row(["Shimada?Hanzo",?38,?"Japan"])
tb.add_row(["Angela?Ziegler",?37,?"Switzerland"])
print(tb)
"""
+----------------+-----+-------------+
|??????name??????|?age?|???country???|
+----------------+-----+-------------+
|?Jack?Morrison??|??49?|???America???|
|?Shimada?Genji??|??35?|????Japan????|
|?Shimada?Hanzo??|??38?|????Japan????|
|?Angela?Ziegler?|??37?|?Switzerland?|
+----------------+-----+-------------+
"""
如果在編寫的過程中,我們需要臨時添加一列,prettytable 也是支持的。
from?prettytable?import?PrettyTable
tb?=?PrettyTable(["name",?"age",?"country"])
tb.add_row(["Jack?Morrison",?49,?"America"])
tb.add_row(["Shimada?Genji",?35,?"Japan"])
tb.add_row(["Shimada?Hanzo",?38,?"Japan"])
tb.add_row(["Angela?Ziegler",?37,?"Switzerland"])
#?調(diào)用?add_column?添加一列
tb.add_column("gender",
??????????????["male",?"male",?"male",?"female"])
print(tb)
"""
+----------------+-----+-------------+--------+
|??????name??????|?age?|???country???|?gender?|
+----------------+-----+-------------+--------+
|?Jack?Morrison??|??49?|???America???|??male??|
|?Shimada?Genji??|??35?|????Japan????|??male??|
|?Shimada?Hanzo??|??38?|????Japan????|??male??|
|?Angela?Ziegler?|??37?|?Switzerland?|?female?|
+----------------+-----+-------------+--------+
"""
輸出內(nèi)容是不是和 MySQL數(shù)據(jù)庫類似呢。
此外 prettytable 還支持從 csv、數(shù)據(jù)庫、html 等數(shù)據(jù)源中導入數(shù)據(jù),但說實話,從數(shù)據(jù)源讀取數(shù)據(jù)我們一般使用 pandas,并且還會伴隨著數(shù)據(jù)處理。而使用 prettytable 只是為了讓程序中產(chǎn)生的信息,能夠以結(jié)構(gòu)化的形式打印,很少會從文件或數(shù)據(jù)庫里面讀數(shù)據(jù)。
輸出指定行、指定列
我們也可以輸出 table 的指定行、指定列。
from?prettytable?import?PrettyTable
tb?=?PrettyTable(["name",?"age",?"country",?"gender"])
tb.add_row(["Jack?Morrison",?49,?"America",?"male"])
tb.add_row(["Shimada?Genji",?35,?"Japan",?"male"])
tb.add_row(["Shimada?Hanzo",?38,?"Japan",?"male"])
tb.add_row(["Angela?Ziegler",?37,?"Switzerland",?"female"])
#?只輸出?name?和?age?兩列
#?start?和?end?表示開始和結(jié)束的行數(shù)(從?0?開始)
print(tb.get_string(fields=["name",?"age"],
????????????????????start=1,?end=3))
"""
+---------------+-----+
|??????name?????|?age?|
+---------------+-----+
|?Shimada?Genji?|??35?|
|?Shimada?Hanzo?|??38?|
+---------------+-----+
"""
#?此外可以用來進行排序
print(tb.get_string(sortby="age",?reversesort=True))
"""
+----------------+-----+-------------+--------+
|??????name??????|?age?|???country???|?gender?|
+----------------+-----+-------------+--------+
|?Jack?Morrison??|??49?|???America???|??male??|
|?Shimada?Hanzo??|??38?|????Japan????|??male??|
|?Angela?Ziegler?|??37?|?Switzerland?|?female?|
|?Shimada?Genji??|??35?|????Japan????|??male??|
+----------------+-----+-------------+--------+
"""
設置表格樣式
表格也支持幾種不同的樣式,供我們選擇。
from?prettytable?import?*
tb?=?PrettyTable(["name",?"age",?"country",?"gender"])
tb.add_row(["Jack?Morrison",?49,?"America",?"male"])
tb.add_row(["Shimada?Genji",?35,?"Japan",?"male"])
tb.add_row(["Shimada?Hanzo",?38,?"Japan",?"male"])
tb.add_row(["Angela?Ziegler",?37,?"Switzerland",?"female"])
#?樣式支持以下幾種:
#?DEFAULT、MSWORD_FRIENDLY、PLAIN_COLUMNS、RANDOM
#?之前的樣式就是?DEFAULT
tb.set_style(MSWORD_FRIENDLY)
print(tb)
"""
|??????name??????|?age?|???country???|?gender?|
|?Jack?Morrison??|??49?|???America???|??male??|
|?Shimada?Genji??|??35?|????Japan????|??male??|
|?Shimada?Hanzo??|??38?|????Japan????|??male??|
|?Angela?Ziegler?|??37?|?Switzerland?|?female?|
"""
tb.set_style(PLAIN_COLUMNS)
print(tb)
"""
?????name?????????????age??????????country??????????gender????????
Jack?Morrison??????????49??????????America???????????male?????????
Shimada?Genji??????????35???????????Japan????????????male?????????
Shimada?Hanzo??????????38???????????Japan????????????male?????????
Angela?Ziegler?????????37????????Switzerland????????female?????
"""
tb.set_style(RANDOM)
print(tb)
"""
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
.????????name??????????????age???????????country???????????gender?????.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
.???Jack?Morrison???????????49???????????America????????????male??????.
.???Shimada?Genji???????????35????????????Japan?????????????male??????.
.???Shimada?Hanzo???????????38????????????Japan?????????????male??????.
.???Angela?Ziegler??????????37?????????Switzerland?????????female?????.
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;
"""
說實話,還是默認的 DEFAULT 樣式最好看。
設置對齊方式
from?prettytable?import?*
tb?=?PrettyTable(["name",?"age",?"country",?"gender"])
tb.add_row(["Jack?Morrison",?49,?"America",?"male"])
tb.add_row(["Shimada?Genji",?35,?"Japan",?"male"])
tb.add_row(["Shimada?Hanzo",?38,?"Japan",?"male"])
tb.add_row(["Angela?Ziegler",?37,?"Switzerland",?"female"])
#?l?代表左對齊,c?代表居中,r?代表右對齊
#?默認居中
tb.align["name"]?=?"l"
tb.align["age"]?=?"c"
tb.align["country"]?=?"r"
print(tb)
"""
+----------------+-----+-------------+--------+
|?name???????????|?age?|?????country?|?gender?|
+----------------+-----+-------------+--------+
|?Jack?Morrison??|??49?|?????America?|??male??|
|?Shimada?Genji??|??35?|???????Japan?|??male??|
|?Shimada?Hanzo??|??38?|???????Japan?|??male??|
|?Angela?Ziegler?|??37?|?Switzerland?|?female?|
+----------------+-----+-------------+--------+
"""
設置邊框樣式
在 PrettyTable 中,邊框由三個部分組成:橫邊框,豎邊框,和邊框連接符,我們都可以修改。
from?prettytable?import?*
tb?=?PrettyTable(["name",?"age",?"country",?"gender"])
tb.add_row(["Jack?Morrison",?49,?"America",?"male"])
tb.add_row(["Shimada?Genji",?35,?"Japan",?"male"])
tb.add_row(["Shimada?Hanzo",?38,?"Japan",?"male"])
tb.add_row(["Angela?Ziegler",?37,?"Switzerland",?"female"])
#?是否顯示邊框,默認為True
tb.border?=?True
#?橫邊框
tb.horizontal_char?=?'^'
#?豎邊框
tb.vertical_char?=?'>'
#?邊框連接符
tb.junction_char='~'
print(tb)
"""
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
>??????name??????>?age?>???country???>?gender?>
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
>?Jack?Morrison??>??49?>???America???>??male??>
>?Shimada?Genji??>??35?>????Japan????>??male??>
>?Shimada?Hanzo??>??38?>????Japan????>??male??>
>?Angela?Ziegler?>??37?>?Switzerland?>?female?>
~^^^^^^^^^^^^^^^^~^^^^^~^^^^^^^^^^^^^~^^^^^^^^~
"""
原文鏈接:https://mp.weixin.qq.com/s/lvLKh_8QE7XTW_PQ5ZA40w
相關(guān)推薦
- 2022-12-06 c++入門必學算法之快速冪思想及實現(xiàn)_C 語言
- 2022-04-09 Solr 檢索結(jié)果集List<SolrDocument> 轉(zhuǎn)換為指定業(yè)務對象總結(jié)
- 2022-12-02 React?Hook中的useState函數(shù)的詳細解析_React
- 2022-04-03 詳解iOS?實現(xiàn)一對多代理方案_IOS
- 2022-05-08 Python集合的增刪改查操作_python
- 2022-08-10 Python接口自動化之request請求封裝源碼分析_python
- 2022-01-28 laravel try異常abort只報出最外層
- 2023-01-29 Python使用pandas導入xlsx格式的excel文件內(nèi)容操作代碼_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支