使用字符串替换方法更改颜色

0 投票
1 回答
653 浏览
提问于 2025-04-18 16:54

我正在尝试使用字符串替换的方法来改变颜色。

如果我运行以下代码,我得到了正确的输出:

1)

>>> print('this \033[31m-text-\033[0m is red' )

2) 如果我尝试运行以下代码,我没有得到预期的输出,而是得到了:

>>> "this --- is red".replace('---', '\033[31m-text-\033[0m')
'this \x1b[31m-text-\x1b[0m is red'

3) 如果我尝试以下代码,我得到了一个错误:

>>> eval ("this --- is red".replace('---', '\033[31m-text-\033[0m'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    this -text- is red
         ^
SyntaxError: invalid syntax

我应该如何运行代码,才能像1)那样通过字符串替换的方法得到结果。

1 个回答

1

总结

直接使用 print "this --- is red".replace('---', '\033[31m-text-\033[0m') 就可以了。

为什么你的版本不管用

第二种方法只是把字符串直接输出了。这意味着在输出之前,字符串会被处理成一种特殊的格式,所以转义字符会变成 \x1b。这也是为什么输出的内容会有单引号包围的原因。

第三种方法试图把字符串当作代码来执行。因为 this -text- is red 不是有效的Python代码,所以会出现 SyntaxError 错误。如果你用 print 而不是 eval 来输出字符串,结果就会正确。

撰写回答