直接用标签即可,但仅在HTML渲染环境(如浏览器、Jupyter Notebook)中生效;终端等纯文本环境需用Unicode组合字符\u0336或对应GUI库的原生样式实现。

直接用 <del></del> 标签就行,但必须确保输出环境支持 HTML 渲染——终端、纯文本文件、PDF 默认不生效。
为什么 <del></del> 在 print() 里只打印出标签本身
因为 Python 的 print() 输出到终端时,终端不解析 HTML;它只是把字符串原样打出来。你看到的 <del>text</del> 是字面量,不是渲染效果。
- 只有在网页(浏览器)、支持 HTML 的富文本控件(如 Jupyter Notebook 的
display(HTML(...)))、或某些文档生成器(如 Sphinx、Quarto)中,<del></del>才会真正显示为带删除线的文字 - 若目标是生成 HTML 文件,可直接写入:
with open("out.html", "w") as f: f.write('<del>已弃用</del>') - 若用
webbrowser.open()配合临时 HTML 文件,也能验证效果
终端里想看到删除线?靠 Unicode 组合字符 \u0336
这是目前最通用的纯文本方案:对每个字符后追加 U+0336(Combining Long Stroke Overlay),让终端“画”出删除线。但要注意字体和终端兼容性。
- 效果依赖终端是否启用组合字符渲染(Windows Terminal、iTerm2、最新 VS Code 终端基本支持;老旧 CMD 可能只显示方块或错位)
- 代码示例:
text = "旧参数"; strikethrough = "".join(c + "\u0336" for c in text); print(strikethrough) - 别用
ansi库的fg.red + "\u0336".join(text)这类写法——\u0336必须紧贴每个字符后,否则删除线位置偏移 - 空格、换行、制表符也会被加线,需提前过滤或替换
tkinter 或 Matplotlib 中加删除线,用原生样式参数
GUI 和绘图库不认 HTML,得走各自样式系统。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- tkinter 控件(如
Button、Label):用font元组第 3 项设"overstrike",例如font=("Arial", 12, "bold overstrike") - Matplotlib 文本:不能直接设删除线,但可用
text.set_path_effects([PathEffect.withStroke(linewidth=2, foreground="black")])模拟——本质是描边,需手动调位置和粗细,且不随缩放自适应 - 注意:tkinter 的
overstrike在部分 Linux 字体下可能不显示,建议搭配underline或颜色区分增强可读性
Word/PDF 等文档格式,别拼 HTML,用对应库的语义接口
<del></del> 标签对 .docx 或 .pdf 文件完全无效。它们需要底层格式指令。
- Word(用
spire.doc):删除线是段落或字符级格式,调用character_format.strike_through = True,不是插入标签 - PDF(用
spire.pdf或reportlab):没有“删除线字体样式”,只能用Canvas.line()手动画一条横线覆盖文字,或改用注释(PdfTextAnnotation)标注“已删除” - 批量处理时,硬塞
<del></del>到 Word 文本里会导致 XML 解析失败或显示异常
最容易被忽略的一点:删除线不是装饰,而是语义标记。如果目标系统(比如某个 API、协作平台)要求识别“已删除内容”,它往往需要结构化字段(如 status="deleted")或专用注释对象,而不是视觉效果。先确认下游怎么消费这个信息,再决定用 <del></del>、Unicode、还是库原生 API。










