如何使用ansi转义码为python中的特定字符单元着色,其中字符单元格位置由变量确定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用ansi转义码为python中的特定字符单元着色,其中字符单元格位置由变量确定相关的知识,希望对你有一定的参考价值。

我希望能够在python中为一个字符单元着色,其中要着色的字符单元由两个变量确定(一个用于列的第一行)。

我已经尝试过字符串解析和字符串连接,但我无法弄清楚它们为什么不起作用。

sys.std(u"u033[%d;%dHu001b[47m33[0m" % (y, x))

code = 47
sys.stdout.write(u"u001b[81;23fu001b[" + str(code) + "m " + RESET )
sys.stdout.write(u"u001b[" + str(x) + ";23fu001b[" + str(code) + "m " )

第一个说:SyntaxError :( unicode error)'unicodeescape'编解码器无法解码位置0-4中的字节:截断 uXXXX转义

第二行有效,它将第81行第23列灰色的字符单元着色。但是第三行在第81行第23行打印“ u001b [47m”而不是输出彩色像素。

我真的不明白为什么字符串连接适用于第二个而不是第三个。理想情况下,我希望能够使用x和y等变量更改值81和23。

我一直在思考这个问题已经有好几个小时了,并且会很感激一些见解。

答案

在python 3上,代码的第3行无需更改即可正常工作。在python 2上,您需要将所有字符串成员强制转换为unicode:

sys.stdout.write(u"u001b[" + unicode(x) + u";23fu001b[" + unicode(code) + u"m " )

第一行似乎与转义序列有另一个问题,因为 u033不是有效的转义字符。

以上是关于如何使用ansi转义码为python中的特定字符单元着色,其中字符单元格位置由变量确定的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何使 ANSI 转义码在 Windows 中也能正常工作?

Python字符串

41-python基础-python3-字符串-转义字符

Linux中的元字符和转义符 单引号 硬引号 双引号 软引号

ANSI 颜色转义序列字符出现在 String.length();

如何转义字符串中的特定 HTML 标签