python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python prettytable

Python prettytable模块应用详解

作者:A-L-Kun

PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

一、简介

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__ = "liu.zhong.kun@foxmail.com"
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__ = "liu.zhong.kun@foxmail.com"
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_)

2、文件读取

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "liu.zhong.kun@foxmail.com"
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__ = "liu.zhong.kun@foxmail.com"
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__ = "liu.zhong.kun@foxmail.com"
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__ = "liu.zhong.kun@foxmail.com"
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__ = "liu.zhong.kun@foxmail.com"
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)

2、自定义样式

具体配置样式,请到官网查看:传送门

对齐: align提供了用户设置对齐的方式,值有l,r,c方便代表左对齐,右对齐和居中 如果不设置,默认居中对齐。

边框样式: 在PrettyTable中,边框由三个部分组成,横边框,竖边框,和边框连接符(横竖交叉的链接符号)

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo02.py"
__email__ = "liu.zhong.kun@foxmail.com"
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)

这是库的大概使用方法,具体请参考官方网站的内容。

到此这篇关于Python prettytable模块应用详解的文章就介绍到这了,更多相关Python prettytable内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文