Jupyter Notebook中怎么设置Python输出字体颜色

阿澈
阿澈
发布时间:2026-10-28| 6人浏览过
原创

全面解析在Jupyter Notebook中设置Python输出字体颜色的方法,包括ANSI转义序列、IPython.display富文本HTML渲染以及Rich库的实现与底层原理对比。

在 Jupyter Notebook 中改变 Python 文本输出的字体颜色,核心解决路径通常分为两类:一是使用标准 ANSI 转义序列(ANSI Escape Sequences),直接配合原生的 print() 函数使用,兼顾轻量与终端跨平台兼容;二是利用 IPython 环境内置的 IPython.display 模块,向页面渲染富文本 HTML 或 Markdown 内容,支持全色域与 CSS 样式调整。如果追求更易读的代码风格与复杂表格排版,也可以借助第三方库 rich 或 colorama 实现。

Jupyter Notebook中怎么设置Python输出字体颜色
图 1:Jupyter Notebook 中三种主流字体着色方案架构全景

一、使用 ANSI 转义序列(零依赖标准方案)

Jupyter Notebook 的前端输出组件内置了对 ANSI 转义序列的解析器。这意味着即使不导入任何额外模块,也可以通过字符串中嵌入控制字符直接为 print() 的输出赋予颜色。

1. 基本语法与调用示例

ANSI 转义码的通用格式为 \033[显示方式;前景色;背景色m文本内容\033[0m。其中 \033[ 为转义引导符(也可以写成 \x1b[),而末尾的 \033[0m 则是用于复位所有样式的重置码。

# 示例 1:打印常见彩色文本
print("\033[31m这是红色文字\033[0m")
print("\033[32m这是绿色文字\033[0m")
print("\033[34m这是蓝色文字\033[0m")

# 示例 2:组合显示方式(1为加粗)与背景颜色(43为黄色背景)
print("\033[1;37;41m加粗白字红底警示\033[0m")
print("\033[4;33m黄色带下划线文字\033[0m")
Jupyter Notebook中怎么设置Python输出字体颜色
图 2:ANSI 控制字符转义序列完整语法拆解与边界控制

2. 常用颜色与样式代码速查

颜色名称 前景色代码 背景色代码 常见样式代码
黑色 (Black) 30 40 0: 默认/重置所有属性
红色 (Red) 31 41 1: 高亮 / 加粗 (Bold)
绿色 (Green) 32 42 4: 下划线 (Underline)
黄色 (Yellow) 33 43 7: 反显 (前景色与背景色互换)
蓝色 (Blue) 34 44 90-97: 高亮前景明亮色系
洋红 / 紫色 (Magenta) 35 45 100-107: 高亮背景明亮色系
青色 (Cyan) 36 46 —
白色 (White) 37 47 —

避坑要点:切记在带有样式的文本结尾添加 \033[0m。如果遗漏,控制台的颜色状态将持续生效,导致之后的普通 print("hello") 或运行报错信息也被动渲染为相同的背景与前景色。

二、使用 IPython.display 富文本渲染(全色域与 CSS 控制)

由于 Jupyter Notebook 运行在浏览器环境下,其输出单元能够直接解析 HTML 和 CSS。当需要使用具体的十六进制颜色(例如品牌色 #8A9478)、调节字体大小或排版时,IPython.display 是最佳方案。

1. HTML 与 Markdown 模式调用

通过导入 HTML 或 Markdown 类,可以直接在输出单元中生成样式化元素:

from IPython.display import display, HTML, Markdown

# 方式 A:使用 HTML 与行内 CSS(支持 Hex、RGB 等精确色彩)
html_content = '<span style="color: #E67E22; font-weight: bold; font-size: 16px;">这是橙色的大号加粗文本</span>'
display(HTML(html_content))

# 方式 B:结合 Markdown 解析
md_content = '<span style="color: #2980B9;">这是通过 Markdown 解析的蓝色文字</span>'
display(Markdown(md_content))

2. 为什么 print("<span style='...'>") 会失效?

很多初学者容易产生一个混淆:既然 Jupyter 运行在网页里,为什么直接执行 print("<span style='color:red'>文本</span>") 不能变成红色,反而把这串标签原封不动打印了出来?

原因在于底层消息传输通道的 MIME 类型不同。print() 将数据写入 Python 的 sys.stdout 标准流,Jupyter 内核将其打包为 stream: text/plain 类型的消息。前端收到纯文本流后,为了防止 XSS 脚本注入攻击,会对所有的 HTML 特殊字符(如 < 和 >)进行自动转义转为普通字符显示;而 display(HTML(...)) 则使用的是专门的 display_data 通道,其 MIME 类型被明确标记为 text/html,前端才会调用浏览器的 DOM 引擎将其作为真正的网页元素解析与渲染。

Jupyter Notebook中怎么设置Python输出字体颜色
图 3:Jupyter 内核与前端展示层通信管道与数据解析机制对比

三、使用第三方扩展库(Rich 与 Colorama)

如果觉得手工拼接 ANSI 转义序列繁琐且容易遗忘重置码,同时又希望语法比 HTML 更加贴合终端脚本,可以引入成熟的第三方着色库。

1. Rich 库:直观的标记标签

rich 是现代 Python 最受欢迎的终端格式化工具,不仅原生支持 Jupyter Notebook,还能自动在终端与网页之间取得一致的表现力:

# 首先确保安装:pip install rich
from rich import print

# 使用类似 BBCode 的简明标签设置前景色与样式
print("[bold red]错误:[/bold red]未找到对应的数据文件!")
print("[green]成功:[/green]任务已于 [cyan]18:30[/cyan] 正常完成。")
print("[yellow on black]警示提示[/yellow on black]")

2. Colorama 库:跨平台常量包装

colorama 将复杂的数字代码封装为易读的对象属性(如 Fore.RED、Back.YELLOW),适合维护已有命令行工程:

# 首先确保安装:pip install colorama
from colorama import Fore, Back, Style

print(Fore.RED + "红色字体输出" + Fore.RESET)
print(Back.GREEN + Fore.WHITE + "绿底白字状态提示" + Style.RESET_ALL)

四、方案对比与选型建议

在实际开发过程中,如何在这三种方案中做选择?可以从依赖成本、跨环境通用性以及展示需求三个核心维度来权衡:

Jupyter Notebook中怎么设置Python输出字体颜色
图 4:三大输出着色方案核心维度对比与工程选型建议

五、常见问题排查与注意事项

  • 导出 HTML / PDF 静态文档时的颜色保留:通过 nbconvert 导出为 HTML 时,ANSI 颜色和 IPython.display(HTML) 均可被完整保留;但如果导出为 LaTeX/PDF,某些复杂的 HTML 标签可能会丢失样式,此时标准的 ANSI 控制码转换往往更为稳定。
  • Windows 旧版命令行的兼容性:如果在本地终端或旧版 Windows 控制台运行含有 ANSI 代码的 Python 脚本,有时会显示类似 [31m 的原始乱码。在 Jupyter Notebook 中不会发生此问题,因为 Jupyter 内核运行环境与前端展示组件原生支持 ANSI 语法解析。
  • 封装轻量辅助函数:为避免在代码中频繁手写 \033[,推荐在 Notebook 顶部定义一个轻量的打印辅助函数:
    def color_print(text, color="green"):
        colors = {
            "red": "\033[31m",
            "green": "\033[32m",
            "yellow": "\033[33m",
            "blue": "\033[34m",
            "reset": "\033[0m"
        }
        prefix = colors.get(color, "")
        print(f"{prefix}{text}{colors['reset']}")
    
    # 像普通函数一样简洁调用
    color_print("测试运行通过", "green")
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。