使用Python 2.7在字符串变量中打印颜色字符

时间:2016-02-17 14:23:31

标签: python unicode colors ansi-colors

这个主题似乎已经在SO上讨论过死亡,但我仍然不能为我的生活设法渲染一个带有ANSI颜色字符的简单字符串。显然以下工作正常,网站名称在我的终端上显示为绿色:

>>> print u'I love \u001b[0;32mStack Overflow\u001b[0m'
I love Stack Overflow

然而:

>>> test='I love \u001b[0;32mStack Overflow\u001b[0m'

>>> test
'I love \\u001b[0;32mStack Overflow\\u001b[0m'

>>> print test
I love \u001b[0;32mStack Overflow\u001b[0m

>>> print test.encode('utf8')
I love \u001b[0;32mStack Overflow\u001b[0m

>>> print test.decode('utf8')
I love \u001b[0;32mStack Overflow\u001b[0m

>>> print unicode(test, 'utf8')
I love \u001b[0;32mStack Overflow\u001b[0m

到底是什么?

2 个答案:

答案 0 :(得分:1)

将其定义为Unicode字符串:

 test = u'I love \u001b[0;32mStack Overflow\u001b[0m'

这样它会正确打印:

>>> print test
I love Stack Overflow

答案 1 :(得分:1)

如果您在字节字符串中接收Unicode转义,请对其进行解码:

>>> test='I love \u001b[0;32mStack Overflow\u001b[0m'
>>> test
'I love \\u001b[0;32mStack Overflow\\u001b[0m'
>>> test.decode('unicode_escape')
u'I love \x1b[0;32mStack Overflow\x1b[0m'
>>> print(test.decode('unicode_escape'))
I love Stack Overflow