ASCII表:以 ASCII 字符制作的表格,例如 PostgreSQL 在 shell 中展示的数据。
Python 中可以使用第三方包 prettytable 来制作 ASCII 表。
$ pip install prettytable
基本用法
from prettytable import PrettyTable
pt = PrettyTable()
# 设置列名
pt.field_names = ["name", "age"]
# 添加行
pt.add_row(["barwe", 23])
pt.add_row(["chin", 24])
# 添加列
pt.add_column("name", ["zhangsan", "lisi"])
pt.add_column("age", [21, 22])
# 输出 ASCII 表
print(pt)
排序
按照某一列排序:
pt.sortby = "name"
默认升序,下面表示按照 name 列降序排序:
pt.sortby = "name"
pt.reversesort = True
下面表示按照 name 升序排序后再按照 age 降序排序:
pt.sortby = "name"
pt.sortby = "age"
pt.reversesort = True
删除
删除某一行:
# 删除第一行
pt.del_row(0)
删除所有行,但是保留表结构:
pt.clear_rows()
清空行数据和表结构:
pt.clear()
对齐
PrettyTable 实例的 align 属性控制列的对齐,可选的对齐方式有 "l"
、"c"
和 "r"
。
pt.align["name"] = "l"
pt.align["age"] = "r"
from CSV
from prettytable import from_csv
with open('demo.csv') as r:
pt = from_csv(r)
from cursor
from prettytable import from_db_cursor
# 通过游标对象进行一些查询,然后从游标对象构建 ASCII 表
import sqlite3 as sqlite
with sqlite.connect('demo.db') as con:
cur = con.cursor()
cur.execute('SELECT * FROM users')
pt = from_db_cursor(cur)
from HTML
自动识别 table 元素:
<html>
<body>
<table>
<tr>
<th>City name</th>
<th>Area</th>
<th>Population</th>
<th>Annual Rainfall</th>
</tr>
<tr>
<td>Adelaide</td>
<td>1295</td>
<td>1158259</td>
<td>600.5</td>
</tr>
<tr>
<td>Brisbane</td>
<td>5905</td>
<td>1857594</td>
<td>1146.4</td>
</tr>
</table>
</body>
</html>
from prettytable import from_html_one
with open('demo.html') as r:
pt = from_html_one(r.read())
to HTML
将 ASCII 表转换为 HTML 格式的字符串:
pt.get_html_string()
to string
将 ASCII 表转换为字符串。
pt.get_string(...)
该方法的可选参数有:
title
: 带标题的表格字符串fields
: List[str] 保留哪些列start
: int,end
: int 保留哪些行
评论区