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

问题描述 投票:0回答:1

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

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

sys.std(u"\u033[%d;%dH\u001b[47m\033[0m" % (y, x))

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

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

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

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

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

python linux cursor ansi
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.