有没有一种方法可以将终端格式化的输出打印到变量中?
print 'a\bb'
--> 'b'
我想将字符串“ b”添加到变量中-那么该怎么做呢?
我正在使用来自telnet的文本字符串。因此,我想使用将要打印到屏幕上的字符串。
所以我正在寻找的是这样的:
simplify_string('a\bb') ==> 'b'
另一个带有回车符的示例:
simplify_string('aaaaaaa\rbb') ==> 'bbaaaaa'
事实证明这很棘手,因为有很多终端格式化命令(包括例如光标上/下/左/右命令,终端颜色代码,垂直和水平制表符等)。
因此,如果要正确模拟终端,请使用终端模拟器!pyte
(pip install pyte
)实现了与VT102兼容的内存虚拟终端。因此,您可以向它提供一些文本,然后从中获取格式化的文本:
import pyte
screen = pyte.Screen(80, 24)
stream = pyte.ByteStream(screen)
stream.feed(b'xyzzz\by\rfoo')
# print the first line of text ('foozy')
print(screen.display[0].rstrip())
要处理多行,只需将文本中的所有行连接起来(例如'\n'.join(row.rstrip() for row in screen.display).rstrip()
)。
请注意,这不能处理尾随空格,但是无论如何,它们在真实终端上是无法区分的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句