程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

prettytable library in Python

編輯:Python

文章目錄

  • prettytable庫
    • 一、 簡介
      • 1、 概述
      • 2、 安裝
      • 3、 實例
    • 二、 添加數據
      • 1、 直接添加
      • 2、 文件讀取
      • 3、 數據庫
    • 三、 輸出方式
      • 1、 全部輸出
      • 2、 選擇性輸出
    • 四、 輸出樣式
      • 1、 內置樣式
      • 2、 自定義樣式

prettytable庫

一、 簡介

1、 概述

因為信息是展現在命令行中的,眾所周知,命令行展現復雜的文本看起來著實累人,於是就想著能像表格那樣展示,那看起來就舒服多了.

prettytable庫就是這麼一個工具,prettytable可以打印出美觀的表格,並且對中文支持相當好(如果有試圖自己實現打印表格,你就應該知道處理中文是多麼的麻煩)

2、 安裝

prettytable並非python的內置庫,通過pip install prettytable即可安裝.

3、 實例

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "[email protected]"
from prettytable import PrettyTable
table = PrettyTable(["index", "name", 'age']) # 實例化對象
""" # 效果一樣 table = PrettyTable() table.field_names = ["index", "name", 'age'] """
table.add_rows([ # 添加行
[1, "Milk", "12"],
[2, "Lili", "34"]
])
print(table) # 把表格輸出

二、 添加數據

1、 直接添加

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "[email protected]"
from prettytable import PrettyTable
# 方式一
table = PrettyTable(["index", "name", 'age']) # 實例化對象
table.add_rows([ # 添加行
[1, "Milk", "12"],
[2, "Lili", "34"]
])
print(table)
# 方式二
table_ = PrettyTable()
table_.add_column('index', ['1', '2']) # 直接添加每一列的數據
table_.add_column('name', ['Milk', 'Lili'])
table_.add_column('age', ['12', '34'])
print(table_)
  • del_row方法采用要刪除的單行的整數索引.
  • del_column方法采用要刪除的單個列的字段名稱.
  • clear_rows方法不接受任何參數並刪除表中的所有行 - 但保持字段名稱不變,以便您可以使用相同類型的數據重新填充它.
  • clear方法不接受任何參數並刪除所有行和所有字段名稱.但是,這與創建一個新的表實例並不完全相同 - 與樣式相關的設置將被保留.

2、 文件讀取

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "[email protected]"
import json
from prettytable import from_csv, from_json, from_html
# 從CSV文件中讀取
table = from_csv(open("test.csv", "r", encoding="utf-8")) # 注意,要打開文件
print(table)
# 從JSON字符串中讀取
data = [["name", "age"], {
"name": "r", "age": 23}, {
"name": "d", "age": 25}, {
"name": "a", "age": 24}] # 注意,要將第一個數據作為字段
table = from_json(json.dumps(data))
print(table)
# 從html代碼中讀取
html = """ <table> <tr> <th>序號</th><th>姓名</th><th>年齡</th> </tr> <tr> <td>1</td><td>a</td><td>23</td> </tr> <tr> <td>2</td><td>b</td><td>24</td> </tr> </table> """
table = from_html(html)
print(table)

3、 數據庫

還可以通過數據庫的游標來進行讀取

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "[email protected]"
import sqlite3
from prettytable import from_db_cursor
# 從數據庫游標中讀取
conn = sqlite3.connect("USERINFO.db")
cur = conn.cursor()
cur.execute("SELECT * FROM res")
table = from_db_cursor(cur)
print(table)

三、 輸出方式

1、 全部輸出

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "[email protected]"
from prettytable import PrettyTable
table = PrettyTable(["index", "name", 'age'])
table.add_rows([
[1, "Milk", "12"],
[2, "Lili", "34"]
])
print(table) # 把表格輸出
print(table.get_html_string()) # 輸出表格的html樣式,還可以輸出csv, json, latex

2、 選擇性輸出

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "[email protected]"
from prettytable import PrettyTable
table = PrettyTable(["index", "name", 'age'])
table.add_rows([
[1, "Milk", "12"],
[2, "Lili", "34"],
[3, "Lili1", "35"]
])
print(table[0: 2]) # 切片輸出,輸出前2行 print(table.get_string(start=0, end=2))
print(table.get_string(fields=["name", "age"])) # 只輸出姓名和年齡對應的列
print(table.get_string(sortby="age", reversesort=True)) # 根據年齡進行降序排序,默認為True,升序排序

四、 輸出樣式

1、 內置樣式

通過set_style()可以設置表格樣式,prettytable內置了多種的樣式個人覺得MSWORD_FRIENDLY,PLAIN_COLUMNS,DEFAULT 這三種樣式看起來比較清爽,在終端下顯示表格本來看起就很累,再加上一下花裡胡哨的東西看起來就更累.

除了以上推薦的三種樣式以外,還有一種樣式不得不說,那就是RANDOM,這是一種隨機的樣式,每一次打印都會在內置的樣式中隨機選擇一個,比較好玩.

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "[email protected]"
from prettytable import PrettyTable
from prettytable import MSWORD_FRIENDLY # 電子文檔模式
from prettytable import PLAIN_COLUMNS # 普通文本模式
from prettytable import RANDOM # 隨機樣式
from prettytable import DEFAULT # 默認樣式
table = PrettyTable(["index", "name", 'age'])
table.add_rows([
[1, "Milk", "12"],
[2, "Lili", "34"],
[3, "Lili1", "35"]
])
# table.set_style(MSWORD_FRIENDLY)
# table.set_style(PLAIN_COLUMNS)
table.set_style(RANDOM)
print(table)
  • DEFAULT- 默認外觀,用於撤消您可能所做的任何樣式更改
  • PLAIN_COLUMNS- 一種無邊框樣式,適用於柱狀數據的命令行程序
  • MARKDOWN- 遵循 Markdown 語法的樣式
  • ORGMODE- 適合Org 模式語法的表格樣式
  • SINGLE_BORDERDOUBLE_BORDER- 使用帶有方框圖字符的連續單/雙邊框線的樣式,以便在終端上進行更精美的顯示

2、 自定義樣式

具體配置樣式,請到官網查看:https://pypi.org/project/prettytable/

對齊: align提供了用戶設置對齊的方式,值有l,r,c方便代表左對齊,右對齊和居中 如果不設置,默認居中對齊.

邊框樣式: 在PrettyTable中,邊框由三個部分組成,橫邊框,豎邊框,和邊框連接符(橫豎交叉的鏈接符號)

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "[email protected]"
from prettytable import PrettyTable
table = PrettyTable(["index", "name", 'age'])
table.add_rows([
[1, "Milk", "12"],
[2, "Lili", "34"],
[3, "Lili1", "35"]
])
table.border = True # 是否顯示邊框
table.junction_char = '+' # 繪制線連接的單個字符
table.horizontal_char = '~' # 水平連接線的字符
table.vertical_char = '*' # 垂直線連接的字符
print(table)

這是庫的大概使用方法,具體請參考官方網站的內容.


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved