这个主题似乎已经在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
到底是什么?
答案 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