一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

如何正确在 Python 列表中显示带颜色的文本

时间:2026-07-15 19:44:53 编辑:袖梨 来源:一聚教程网

使用 termcolor 为列表元素着色时,直接 print(list) 会输出 ANSI 转义码而非实际颜色;需逐项打印或解包输出,才能让终端正确渲染颜色。

使用 `termcolor` 为列表元素着色时,直接 `print(list)` 会输出 ansi 转义码而非实际颜色;需逐项打印或解包输出,才能让终端正确渲染颜色。

在 Python 中,termcolor.colored() 返回的是一个包含 ANSI 转义序列的字符串(例如 'x1b[31m23x1b[0m'),它本身并无“颜色属性”,而是依赖终端解释这些控制码来实现着色效果。当你将着色后的字符串放入列表并调用 print(lista) 时,Python 默认以 repr() 方式显示整个列表——即展示其内部字符串表示,因此你会看到原始的转义字符,而非渲染后的红色文字。

✅ 正确做法是避免对整个列表调用 print(),而应让每个着色字符串独立输出到终端,从而触发终端解析:

from termcolor import coloredlista = [1, 5, 12, 54, 63, colored(23, "red"), 65]# 方法一:循环打印,用空格分隔(注意 end=" " 避免换行)for item in lista:    print(item, end=" ")print()  # 最后换行# 方法二:解包打印(推荐,简洁且语义清晰)print(*lista, sep=" ")

输出效果(在支持 ANSI 的终端中):
1 5 12 54 63 23 65 —— 其中 23 显示为红色。

⚠️ 注意事项:

立即学习“Python免费学习笔记(深入)”;

  • 确保运行环境支持 ANSI 转义码(绝大多数现代终端如 Linux/macOS Terminal、Windows Terminal、VS Code 内置终端均支持;传统 Windows CMD 在未启用虚拟终端前可能不生效);
  • 不要对含 colored() 的列表使用 str() 或 repr()(如 print(str(lista))),这会再次暴露转义码;
  • 若需构建带颜色的格式化字符串(如用于日志或拼接),可先用 ' '.join(map(str, lista)),但前提是所有元素均为字符串类型——建议统一预处理:formatted = [str(x) if not isinstance(x, str) else x for x in lista],再 print(' '.join(formatted))。

总结:颜色渲染发生在输出阶段,而非存储阶段。只要确保着色字符串被直接送入 print()(而非嵌套在容器中被 repr 化),终端就能正确呈现色彩。

热门栏目