You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Termcolor生成的带颜色字符串还原为普通无格式字符串?

如何移除termcolor生成字符串中的颜色格式

当然有办法解决这个问题!当你用termcolor.colored()生成带颜色的字符串时,它本质上是在原文本前后添加了ANSI转义序列——这些是终端用来渲染颜色的特殊控制字符,虽然肉眼看不到,但确实存在于字符串里。要把它转回普通文本,核心就是移除这些转义序列。

方法1:用正则表达式手动移除(无需额外依赖)

这是最直接的方式,写一个简单的函数就能搞定:

import re
from termcolor import colored

a = colored('hello', 'red')

def strip_color_codes(text):
    # 匹配所有ANSI颜色/格式转义码
    return re.sub(r'\x1b\[[0-9;]*m', '', text)

# 转换为普通字符串
plain_text = strip_color_codes(a)
print(plain_text)  # 输出: hello

这段正则表达式\x1b\[[0-9;]*m专门用来匹配ANSI控制序列:

  • \x1b 是ESC字符的十六进制表示
  • \[ 匹配左方括号
  • [0-9;]* 匹配任意数量的数字和分号(用来指定颜色/格式参数)
  • m 是序列的结束标记

方法2:使用第三方库(如果允许额外依赖)

如果你不想自己写正则,也可以用专门处理ANSI序列的库,比如ansi2txt:
先安装库:

pip install ansi2txt

然后使用:

from ansi2txt import ansi2txt
from termcolor import colored

a = colored('hello', 'red')
plain_text = ansi2txt(a)
print(plain_text)

两种方法都能完美把带颜色的变量a转回纯文本的hello~

内容的提问来源于stack exchange,提问作者Bale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:27:33