如何将Python输出转为表格(非CSV读取场景)
嘿,我懂你现在的困扰——不想碰CSV,却要把代码输出转成规整的表格用来发邮件,完全有办法搞定!咱们不用绕CSV的路子,直接从你的输出数据入手就行,我给你几个实用的方案,分分钟搞定表格生成。
核心思路:先把输出转成结构化数据
不管你的代码输出是啥格式(比如每行是空格/逗号分隔的字符串、对象列表、甚至是零散的打印结果),第一步都是把它转换成二维列表的结构——第一行是表头,后面每一行对应表格的一行数据。比如:
# 示例结构化数据 structured_data = [ ["订单ID", "客户名称", "订单金额"], ["OD2024001", "ABC公司", "¥1200"], ["OD2024002", "XYZ工作室", "¥850"], ["OD2024003", "个人用户", "¥300"] ]
如果你的原始输出是纯文本行,比如这样:
订单ID 客户名称 订单金额 OD2024001 ABC公司 ¥1200 OD2024002 XYZ工作室 ¥850
可以先把它拆成二维列表:
raw_output = """订单ID 客户名称 订单金额 OD2024001 ABC公司 ¥1200 OD2024002 XYZ工作室 ¥850""" structured_data = [line.split() for line in raw_output.splitlines()]
方案1:手动拼接Markdown表格(无依赖)
如果不想装额外库,直接用字符串拼接就能生成标准Markdown表格,邮件客户端大多支持这种格式:
def build_markdown_table(data): if not data: return "" # 构建表头行 header = "| " + " | ".join(data[0]) + " |\n" # 构建分隔线(对齐用的---) separator = "| " + " | ".join(["---"] * len(data[0])) + " |\n" # 构建数据行 data_rows = [] for row in data[1:]: data_rows.append("| " + " | ".join(str(item) for item in row) + " |") # 拼接所有部分 return header + separator + "\n".join(data_rows) # 生成表格 md_table = build_markdown_table(structured_data) print(md_table)
输出的Markdown表格长这样:
| 订单ID | 客户名称 | 订单金额 |
|---|---|---|
| OD2024001 | ABC公司 | ¥1200 |
| OD2024002 | XYZ工作室 | ¥850 |
| OD2024003 | 个人用户 | ¥300 |
方案2:用tabulate库快速生成(更灵活)
如果可以装第三方库,tabulate绝对是首选——它支持一键生成Markdown、HTML、ASCII等多种格式的表格,省得自己拼字符串。
先安装库:
pip install tabulate
然后用两行代码搞定:
from tabulate import tabulate # 生成Markdown表格,指定表头和格式 md_table = tabulate(structured_data[1:], headers=structured_data[0], tablefmt="github") # 如果需要HTML表格(邮件兼容性更好),换成tablefmt="html" html_table = tabulate(structured_data[1:], headers=structured_data[0], tablefmt="html") print(md_table)
邮件发送小提示
如果担心有些邮件客户端不支持Markdown,直接用HTML表格更稳妥:
- 把生成的HTML表格作为邮件正文;
- 发送邮件时设置
Content-Type为text/html,这样表格会完美渲染。
总结步骤
- 把你的代码输出转换成二维列表(表头+数据行);
- 用上面的方法生成Markdown/HTML表格;
- 把表格插入邮件正文发送即可。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

