Python实用库 PrettyTable 学习笔记


Posted in Python onAugust 06, 2019

本文实例讲述了Python实用库 PrettyTable。分享给大家供大家参考,具体如下:

PrettyTable安装

使用pip即可十分方便的安装PrettyTable,如下:

pip install PrettyTable

PrettyTable使用示例

github上有PrettyTable的使用说明,链接如下:https://github.com/dprince/python-prettytable

以下是具体的使用示例:

import prettytable as pt

按行添加数据

tb = pt.PrettyTable()
tb.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
tb.add_row(["Adelaide",1295, 1158259, 600.5])
tb.add_row(["Brisbane",5905, 1857594, 1146.4])
tb.add_row(["Darwin", 112, 120900, 1714.7])
tb.add_row(["Hobart", 1357, 205556,619.5])
print(tb)

+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
+-----------+------+------------+-----------------+

按列添加数据

tb.add_column('index',[1,2,3,4])
print(tb)

+-----------+------+------------+-----------------+-------+
| City name | Area | Population | Annual Rainfall | index |
+-----------+------+------------+-----------------+-------+
|  Adelaide | 1295 |  1158259   |      600.5      |   1   |
|  Brisbane | 5905 |  1857594   |      1146.4     |   2   |
|   Darwin  | 112  |   120900   |      1714.7     |   3   |
|   Hobart  | 1357 |   205556   |      619.5      |   4   |
+-----------+------+------------+-----------------+-------+

使用不同的输出风格

tb.set_style(pt.MSWORD_FRIENDLY)
print('--- style:MSWORD_FRIENDLY -----')
print(tb)
tb.set_style(pt.PLAIN_COLUMNS)
print('--- style:PLAIN_COLUMNS -----')
print(tb)

随机风格,每次不同

tb.set_style(pt.RANDOM)
print('--- style:MSWORD_FRIENDLY -----')
print(tb)
tb.set_style(pt.DEFAULT)
print('--- style:DEFAULT -----')
print(tb)

--- style:MSWORD_FRIENDLY -----
| City name | Area | Population | Annual Rainfall |
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
--- style:PLAIN_COLUMNS -----
City name        Area        Population        Annual Rainfall       
 Adelaide        1295         1158259               600.5            
 Brisbane        5905         1857594               1146.4           
  Darwin         112           120900               1714.7           
  Hobart         1357          205556               619.5            
--- style:MSWORD_FRIENDLY -----
@    Adelaide     1295     1158259     600.5 @
@    Brisbane     5905     1857594     1146.4@
@     Darwin      112       120900     1714.7@
@     Hobart      1357      205556     619.5 @
--- style:DEFAULT -----
+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
+-----------+------+------------+-----------------+

不打印,获取表格字符串

s = tb.get_string()
print(s)

可以只获取指定列或行

s = tb.get_string(fields=["City name", "Population"],start=1,end=4)
print(s)

+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |  1158259   |      600.5      |
|  Brisbane | 5905 |  1857594   |      1146.4     |
|   Darwin  | 112  |   120900   |      1714.7     |
|   Hobart  | 1357 |   205556   |      619.5      |
+-----------+------+------------+-----------------+
+-----------+------------+
| City name | Population |
+-----------+------------+
|  Brisbane |  1857594   |
|   Darwin  |   120900   |
|   Hobart  |   205556   |
+-----------+------------+

自定义表格输出样式

设定左对齐

tb.align = 'l'

设定数字输出格式

tb.float_format = "2.2"

设定边框连接符为'*”

tb.junction_char = "*"

设定排序方式

tb.sortby = "City name"

设定左侧不填充空白字符

tb.left_padding_width = 0
print(tb)

*----------*-----*-----------*----------------*
|City name |Area |Population |Annual Rainfall |
*----------*-----*-----------*----------------*
|Adelaide  |1295 |1158259    |600.50          |
|Brisbane  |5905 |1857594    |1146.40         |
|Darwin    |112  |120900     |1714.70         |
|Hobart    |1357 |205556     |619.50          |
*----------*-----*-----------*----------------*

不显示边框

tb.border = 0
print(tb)

修改边框分隔符

tb.set_style(pt.DEFAULT)
tb.horizontal_char = '+'
print(tb)

City name Area Population Annual Rainfall
Adelaide  1295 1158259    600.50         
Brisbane  5905 1857594    1146.40        
Darwin    112  120900     1714.70        
Hobart    1357 205556     619.50         
+++++++++++++++++++++++++++++++++++++++++++++++++++
| City name | Area | Population | Annual Rainfall |
+++++++++++++++++++++++++++++++++++++++++++++++++++
| Adelaide  | 1295 | 1158259    | 600.50          |
| Brisbane  | 5905 | 1857594    | 1146.40         |
| Darwin    | 112  | 120900     | 1714.70         |
| Hobart    | 1357 | 205556     | 619.50          |
+++++++++++++++++++++++++++++++++++++++++++++++++++

prettytable也支持输出HTML代码

s = tb.get_html_string()
print(s)
City name Area Population Annual Rainfall
Adelaide 1295 1158259 600.50
Brisbane 5905 1857594 1146.40
Darwin 112 120900 1714.70
Hobart 1357 205556 619.50

使用copy方法复制对象

tb.set_style(pt.DEFAULT)
tb.horizontal_char = '.'
tb2 = tb.copy()
tb.align = 'l'
tb2.align = 'r'
print(tb)
print(tb2)

直接赋值,得到的是索引

tb.horizontal_char = '-'
tb.aliign = 'l'
tb3 = tb
tb3.align = 'r'
print(tb)
print(tb3)

+...........+......+............+.................+
| City name | Area | Population | Annual Rainfall |
+...........+......+............+.................+
| Adelaide  | 1295 | 1158259    | 600.50          |
| Brisbane  | 5905 | 1857594    | 1146.40         |
| Darwin    | 112  | 120900     | 1714.70         |
| Hobart    | 1357 | 205556     | 619.50          |
+...........+......+............+.................+
+...........+......+............+.................+
| City name | Area | Population | Annual Rainfall |
+...........+......+............+.................+
|  Adelaide | 1295 |    1158259 |          600.50 |
|  Brisbane | 5905 |    1857594 |         1146.40 |
|    Darwin |  112 |     120900 |         1714.70 |
|    Hobart | 1357 |     205556 |          619.50 |
+...........+......+............+.................+
+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |    1158259 |          600.50 |
|  Brisbane | 5905 |    1857594 |         1146.40 |
|    Darwin |  112 |     120900 |         1714.70 |
|    Hobart | 1357 |     205556 |          619.50 |
+-----------+------+------------+-----------------+
+-----------+------+------------+-----------------+
| City name | Area | Population | Annual Rainfall |
+-----------+------+------------+-----------------+
|  Adelaide | 1295 |    1158259 |          600.50 |
|  Brisbane | 5905 |    1857594 |         1146.40 |
|    Darwin |  112 |     120900 |         1714.70 |
|    Hobart | 1357 |     205556 |          619.50 |
+-----------+------+------------+-----------------+
---------------------

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中用startswith()函数判断字符串开头的教程
Apr 07 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
Python实现ssh批量登录并执行命令
Oct 25 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
python join方法使用详解
Jul 30 Python
Django中create和save方法的不同
Aug 13 Python
face++与python实现人脸识别签到(考勤)功能
Aug 28 Python
python3实现弹弹球小游戏
Nov 25 Python
Python线程障碍对象Barrier原理详解
Dec 02 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
python pip如何手动安装二进制包
Sep 30 Python
java字符串格式化输出实例讲解
Jan 06 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 #Python
Python中调用其他程序的方式详解
Aug 06 #Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 #Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 #Python
django将数组传递给前台模板的方法
Aug 06 #Python
Python实现时间序列可视化的方法
Aug 06 #Python
python 模拟银行转账功能过程详解
Aug 06 #Python
You might like
PHP多线程抓取网页实现代码
2010/07/22 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
jquery.validate分组验证代码
2011/03/17 Javascript
给文字加上着重号的JS代码
2013/11/12 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
jQuery中hover与mouseover和mouseout的区别分析
2015/12/24 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
Python类属性的延迟计算
2016/10/22 Python
python中map的基本用法示例
2018/09/10 Python
python中import与from方法总结(推荐)
2019/03/21 Python
Python字符串的一些操作方法总结
2019/06/10 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
大学生创业计划书怎么写
2014/09/15 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
医院保洁员岗位职责
2015/02/13 职场文书
2015年仓库工作总结
2015/04/09 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers