使用字符串替换方法更改颜色
我正在尝试使用字符串替换的方法来改变颜色。
如果我运行以下代码,我得到了正确的输出:
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
来输出字符串,结果就会正确。