侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

python - prettytable

barwe
2021-12-02 / 0 评论 / 0 点赞 / 957 阅读 / 1,855 字
温馨提示:
本文最后更新于 2022-07-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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 保留哪些行
0

评论区