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

时间:2014-08-11 23:40:36

标签: python python-2.7

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

如果我运行以下内容,我会获得正确的输出:

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 个答案:

答案 0 :(得分:1)

TL; DR

只需使用print "this --- is red".replace('---', '\033[31m-text-\033[0m')

为什么您的版本无法使用

版本2)只用解释器输出字符串。这意味着在输出之前会调用repr,以便将转义字符转义为\x1b。这也是显示输出周围单引号的原因。

版本3)尝试将字符串计算为代码。因为this -text- is red不是有效的Python,所以它会引发SyntaxError。如果您使用print代替eval输出字符串,则输出将是正确的。