
PrettyTable 默认会对 中的 HTML 标签进行 HTML 实体转义,导致 等标签无法正常渲染;可通过 html.unescape() 对生成的 HTML 字符串进行反转义,从而恢复原始 HTML 结构。
prettytable 默认会对 `
PrettyTable 是一个轻量级 Python 库,常用于快速生成 ASCII 表格或导出为 HTML。但在使用 get_html_string(title=...) 时,其内部会自动对标题内容执行 HTML 转义(如
解决方法非常简洁:先生成 HTML 字符串,再用标准库 html.unescape() 还原原始 HTML 标签。无需修改 PrettyTable 源码或引入第三方依赖。
以下是完整示例:
import html
from prettytable import PrettyTable
table = PrettyTable()
table.field_names = ["Name", "Email", "Phone"]
table.add_row([
"John Smith",
'<a class="__cf_email__" data-cfemail="1a70757274346977736e725a7f777b737634797577" href="https://www.php.cn/link/89fee0513b6668e555959f5dc23238e9">[email@example.com]</a>',
"XXX-XXX-XXXX"
])
# 使用含 HTML 的标题(会被自动转义)
html_output = table.get_html_string(title='<a href="https://www.example.com" target="_blank">? User Contact Table</a>')
# 关键步骤:还原 HTML 实体
safe_html = html.unescape(html_output)
print(safe_html)
输出中
<caption><a href="https://www.example.com" target="_blank">? User Contact Table</a></caption>
✅ 注意事项:
- html.unescape() 仅解码标准 HTML 实体(如 <, ", &),不会执行脚本或解析 DOM,因此仍需确保传入的 title 字符串本身是可信的(避免用户输入直传);
- 此方案适用于所有 HTML 标题场景:超链接、内联样式()、Font Awesome 图标()等;
- 若需批量处理多个表格,可封装为辅助函数:
def get_html_with_raw_title(table: PrettyTable, title: str) -> str: return html.unescape(table.get_html_string(title=title))
⚠️ 注意:prettytable 当前(v3.10+)不支持禁用标题转义的内置参数,因此 html.unescape() 是最直接、兼容性最佳的解决方案。未来若升级至支持 escape_title=False 的版本,可改用原生配置,但现阶段该方法已被广泛验证稳定可靠。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











