Python中使用PrettyTable库如何实现表格跨列合并单元格?
解决方案
方案1:使用PrettyTable内置跨列标题方法(推荐)
PrettyTable 2.5.0及以上版本提供了add_section_title()方法,专门用于插入跨所有列的标题行,无需手动匹配列数,代码示例如下:
from prettytable import PrettyTable x = PrettyTable() x.field_names = ["City name", "Area", "Population", "Annual Rainfall"] x.add_row(["Adelaide", 1295, 1158259, 600.5]) # 插入跨全4列的标题行 x.add_section_title("City No. 1") # 可继续添加后续普通行 x.add_row(["Brisbane", 5905, 1857594, 1146.4]) print(x)
运行后会自动生成居中显示的跨列行,上下默认带分隔线,符合类似Excel合并单元格的效果。
方案2:旧版本兼容方案
如果你使用的是不支持add_section_title()的低版本PrettyTable,可以手动构造和列数长度一致的行,将内容放在首个单元格,其余单元格填空字符串,再设置全局居中对齐即可,示例代码:
from prettytable import PrettyTable x = PrettyTable() x.field_names = ["City name", "Area", "Population", "Annual Rainfall"] # 全局设置所有列居中对齐 x.align = "c" x.add_row(["Adelaide", 1295, 1158259, 600.5]) # 手动补全空值匹配列数 x.add_row(["City No. 1", "", "", ""]) # 可选:在跨列行前后添加分隔线区分层级 x.add_divider() x.add_row(["Brisbane", 5905, 1857594, 1146.4]) print(x)
方案3:使用rich库实现更复杂的表格需求
如果后续有更多单元格合并、样式自定义的需求,可以改用rich库的Table组件,对合并单元格、跨列/跨行的支持更灵活,示例代码:
from rich.console import Console from rich.table import Table table = Table() # 定义表头 table.add_column("City name") table.add_column("Area") table.add_column("Population") table.add_column("Annual Rainfall") # 添加普通行 table.add_row("Adelaide", "1295", "1158259", "600.5") # 添加跨全列的分区标题 table.add_section("City No. 1") # 添加后续普通行 table.add_row("Brisbane", "5905", "1857594", "1146.4") # 打印表格 console = Console() console.print(table)
内容的提问来源于stack exchange,提问作者Eduardo Herrera
相关产品推荐
相关产品推荐

