我正在尝试使用字符串替换方法更改颜色。
如果我运行以下内容,我会获得正确的输出:
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))。
答案 0 :(得分:1)
只需使用print "this --- is red".replace('---', '\033[31m-text-\033[0m')
。
版本2)只用解释器输出字符串。这意味着在输出之前会调用repr
,以便将转义字符转义为\x1b
。这也是显示输出周围单引号的原因。
版本3)尝试将字符串计算为代码。因为this -text- is red
不是有效的Python,所以它会引发SyntaxError
。如果您使用print
代替eval
输出字符串,则输出将是正确的。