如何使用 Python 输出漂亮的表格?

部署运行你感兴趣的模型镜像

Python 表格打印进化史:从朴素到惊艳,让你的数据展示更专业!

在日常开发和数据分析中,我们经常需要在终端或文档中展示表格数据。直接使用 print() 拼接虽然简单,但往往排版混乱,显得不够专业。那么今天我将带你领略 Python 表格打印的进化历程,从基础方法到高级技巧,让你的数据展示焕然一新!

基础篇:原生 Python 实现

1. 原始 print 拼接

data = [
    ["姓名", "年龄", "城市"],
    ["小李", 25, "北京"],
    ["小王", 30, "上海"],
    ["小张", 28, "深圳"]
]

for row in data:
    print("  ".join(str(x) for x in row))

输出结果:

姓名  年龄  城市
小李  25  北京
小王  30  上海
小张  28  深圳

缺点:需要手动调整空格,数据长度变化时容易错位。

2. format 格式化

for row in data:
    print("{:<6}{:<4}{:<6}".format(*row))

输出结果:

姓名    年龄 城市  
小李    25  北京  
小王    30  上海  
小张    28  深圳  

优点:比直接拼接更整齐,但仍需手动设置列宽。

进阶篇:第三方库助力

3. tabulate:快速上手的神器

from tabulate import tabulate

print(tabulate(data[1:], headers=data[0], tablefmt="grid"))

输出结果:

+------+----+------+
| 姓名 | 年龄 | 城市 |
+------+----+------+
| 小李 |  25 | 北京 |
| 小王 |  30 | 上海 |
| 小张 |  28 | 深圳 |
+------+----+------+

特点:支持多种表格样式(plain, fancy_grid, github等),简单易用。

4. PrettyTable:灵活定制

from prettytable import PrettyTable

table = PrettyTable()
table.field_names = data[0]

for row in data[1:]:
    table.add_row(row)

print(table)

输出结果:

+------+-----+------+
| 姓名 | 年龄 | 城市 |
+------+-----+------+
| 小李 |  25 | 北京 |
| 小王 |  30 | 上海 |
| 小张 |  28 | 深圳 |
+------+-----+------+

优势:支持对齐方式、边框样式定制,可导出 HTML。

5. pandas:数据分析首选

import pandas as pd

df = pd.DataFrame(data[1:], columns=data[0])
print(df.to_string(index=False))

输出结果:

姓名  年龄  城市
小李   25  北京
小王   30  上海
小张   28  深圳

优势:数据处理与展示一体化,适合数据分析场景。

高级篇:终端美化艺术

6. rich:终端里的艺术品

from rich.table import Table
from rich.console import Console

table = Table(title="人员信息")

table.add_column("姓名", justify="center", style="cyan")
table.add_column("年龄", justify="right", style="magenta")
table.add_column("城市", justify="center", style="green")

for row in data[1:]:
    table.add_row(*map(str, row))

console = Console()
console.print(table)

输出效果:彩色表格,支持复杂样式和嵌套(实际效果需在终端查看)。

7. texttable:专业文本表格

from texttable import Texttable

table = Texttable()
table.set_cols_align(["l", "r", "c"])
table.add_rows(data)
print(table.draw())

输出结果:

┌──────┬────┬──────┐
│姓名  │年龄│ 城市 │
├──────┼────┼──────┤
│小李  │  25│ 北京 │
├──────┼────┼──────┤
│小王  │  30│ 上海 │
├──────┼────┼──────┤
│小张  │  28│ 深圳 │
└──────┴────┴──────┘

特点:专业的文本表格库,支持中文对齐。

实战篇:自定义封装

8. 自动调整列宽封装

def print_table(rows):
    col_widths = [max(len(str(x)) for x in col) for col in zip(*rows)]
    for row in rows:
        print(" | ".join(str(x).ljust(w) for x, w in zip(row, col_widths)))

print_table(data)

输出结果:

姓名 | 年龄 | 城市
小李 | 25   | 北京
小王 | 30   | 上海
小张 | 28   | 深圳

优势:自动适应内容宽度,适合快速部署。

总结与选择建议

场景推荐工具理由
临时脚本自定义函数轻量,无需依赖
文档生成tabulate样式丰富,简单易用
交互式工具PrettyTable灵活定制,功能全面
数据分析pandas数据处理展示一体化
终端美化rich视觉效果出众,功能强大
专业报表texttable专业表格格式,支持复杂需求

核心建议:根据实际需求选择合适的工具,避免过度设计。简单的场景用简单的方法,复杂的需求选择专业的库。

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值