目录
一、说明
PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,十分实用
二、安装
使用pip即可十分方便的安装PrettyTable(命令行窗口安装),如下:
先windows+R打开命令行窗口
然后输入pip install PrettyTable
pip install PrettyTable
三、导入
from prettytable import PrettyTable 或者 import prettytable as pt
四、基本使用
1、创建表格
创建表:
tb = pt.PrettyTable()或x = PrettyTable()
按行/列添加数据:
tb.add_row( <llist> )
tb.add_column( <llist> )
2、设置表的名称
x.title = 'Table 1 City Info'
3、按行/列添加数据:
>>> ## 按行添加数据
... 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 |
+-----------+------+------------+-----------------+-------+
>>>
4、一次性添加多行
x.field_names = ["City name", "Area", "Population", "Annual Rainfall"]
x.add_rows(
[
["Adelaide", 1295, 1158259, 600.5],
["Brisbane", 5905, 1857594, 1146.4],
["Darwin", 112, 120900, 1714.7],
["Hobart", 1357, 205556, 619.5],
["Sydney", 2058, 4336374, 1214.8],
["Melbourne", 1566, 3806092, 646.9],
["Perth", 5386, 1554769, 869.4],
]
)
注意:add_column的第一个参数表示列的字段名,为字符串,第二个参数为列表,即添加到该列的数据。没有一次性添加多列的方法。
5、根据CSV导入
PrettyTable不仅提供了手动按行按列添加数据,也支持直接从csv文件中读取数据,需要注意的是,字符串需要加上引号。如果要读取cvs文件数据,必须要先导入from_csv,否则无法运行
from prettytable import from_csv
with open("CityInfo.csv") as fp:
mytable = from_csv(fp)
print(mytable)
6、从数据库中导入
从数据库查询出来的数据可以直接导入到表格打印
#!/usr/bin/python
#**coding:utf-8**
import sys
from prettytable import PrettyTable
from prettytable import from_db_cursor
import sqlite3
reload(sys)
sys.setdefaultencoding('utf8')
conn = sqlite3.connect("/tmp/aliyun.db")
cur = conn.cursor()
cur.execute("SELECT * FROM res")
table = from_db_cursor(cur)
print(table)
+------+----------+----------+------------+
| 编号 | 云编号 | 名称 | IP地址 |
+------+----------+----------+------------+
| 1 | server01 | 服务器01 | 172.16.0.1 |
| 2 | server02 | 服务器02 | 172.16.0.2 |
| 3 | server03 | 服务器03 | 172.16.0.3 |
| 4 | server04 | 服务器04 | 172.16.0.4 |
| 5 | server05 | 服务器05 | 172.16.0.5 |
| 6 | server06 | 服务器06 | 172.16.0.6 |
| 7 | server07 | 服务器07 | 172.16.0.7 |
| 8 | server08 | 服务器08 | 172.16.0.8 |
| 9 | server09 | 服务器09 | 172.16.0.9 |
+------+----------+----------+------------+
7、表数据的删除
prettytable提供四种方法用于删除数据:
del_row:删除某行,允许传入一个整数参数,(从0开始)。
del_column:删除某列,允许传入一个字符串,表示要删除的列的字段名。
clear_rows:删除所有数据,但保存列的字段名。
clear:删除所有数据,包括列的字段名。
8、显示表格
print(x)
mystring = x.get_string()
get_string()
函数可以将上面print
的结果直接转化为字符串,可以将这个结果写到文本文件里。当然也可以打印出来。
print(x.get_string())
9、显示指定的列
print(x.get_string(fields=["City name", "Population"]))
10、显示指定的行
print(x.get_string(start=1, end=4))