PrettyTable模块

一、简介

PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格。

二、安装

pip install prettytable

三、导入

from prettytable import PrettyTable

四、使用

# 创建表:
tb = pt.PrettyTable()

# 按行添加数据:
tb.add_row()

# 按列添加数据:
tb.add_column()

五、示例

(1)按行添加数据

import prettytable as pt

tb = pt.PrettyTable(['班级', '姓名', '性别', '科目', '成绩'])
# tb = pt.PrettyTable()
# tb.field_names = ['班级', '姓名', '性别', '科目', '成绩']

tb.add_row(['15级1班', '小明', '男', '语文', 120])
tb.add_row(['15级2班', '小红', '女', '英语', 98])
tb.add_row(['16级1班', '张三', '男', '数学', 143])
tb.add_row(['17级6班', '李四', '男', '数学', 130])

print(tb)
按行添加数据

(2)按列添加数据

import prettytable as pt

tb = pt.PrettyTable()
tb.add_column('班级', ['15级1班', '15级2班', '16级1班', '17级6班'])
tb.add_column('姓名', ['小明', '小红', '张三', '李四'])
tb.add_column('性别', ['男', '女', '男', '男'])
tb.add_column('科目', ['语文', '英语', '数学', '数学'])
tb.add_column('成绩', [120, 98, 143, 130])

print(tb)
按列添加数据

(3)注意

这里

tb = pt.PrettyTable(["班级", "姓名", "性别", "科目", "成绩"])

相当于

tb = pt.PrettyTable()
tb.field_names = ["班级", "姓名", "性别", "科目", "成绩"]

如果没有添加表头,那么会以默认的Field+编号显示,编号从1开始。


六、从csv文件添加数据

PrettyTable不仅提供了手动按行按列添加数据,也支持直接从csv文件中读取数据。

import prettytable as pt

with open('res.csv', 'r') as f:
    table = pt.from_csv(fp) 
    print(table)

注意:csv文件不能通过xls直接重命名得到,会报错。如果是xls文件,请用另存为csv获得csv文件

七、从sql查询值添加

从数据库查询出来的数据以表格形式打印,下例使用的是sqlite3,mysql也支持。

import sqlite3
from prettytable import from_db_cursor 

conn = sqlite3.connect("/sqlite.db")
cur = conn.cursor()
cur.execute("SELECT * FROM myDatabase") 
table = from_db_cursor(cur)
print(table)

八、从HTML导入数据

from prettytable import from_html

html_string='''
code uuid name IP
1 server01 server-01 192.168.100.1
2 server02 server-02 192.168.100.2
''' table = from_html(html_string) print(table[0])

导入 html 的表格,但是不一样的地方是 print 语句,使用 html 表格导入数据的时候 print 的必须是列表中的第一个元素,否则有可能会报[]这样的错误。

九、选择性输出

有选择的输出某些特定的行。

## 输出指定的列
print(table.get_string(fields=["Area", "Population"]))

## 输出指定的行,start 和 end 参数可以自由控制显示区间
print(table.get_string(start = 0, end = 2))

## 将表格切片
new_table = table[0:2]
print(new_table)

## 输出排序
print(table.get_string(sortby="City name", reversesort=True))
## 其中 reversesort 指定了是否倒序排序,默认为 False,即默认正序列排序。sortby 指定了排序的字段。

你可能感兴趣的:(PrettyTable模块)