与\ b字符相反的是什么,即一种非擦除空间?

时间:2012-12-10 10:34:39

标签: python string character ascii tty

根据我的理解,\b控制字符不应该删除前一个字符(这也是\b +一个del字符),所以这样的东西有效:

>>> print 'pototo\b\b\ba'
potato

是否存在向前移动的角色,如非覆盖空间?预期的用法类似于(我将此字符称为\x):

>>> print 'pototo\r\x\x\xa'
potato

显然在打字机上,普通空间可以做到这一点。但是在一个终端上,一个空间会擦掉下面的字母。

我的用例是一种pexpect匹配的场景,我想追溯返回并用颜色装饰字符流输出的某些部分,我想知道是否保留缓存内存中的整个当前行是否必要。

2 个答案:

答案 0 :(得分:2)

如果您可以依赖终端(*)中的ANSI escape code sequences,则可以使用光标转发(CUF)序列“CSI n C”,如下所示:

print "Pototo\b\b\ba\x1b[2Ces"

并获得:

Potatoes

CSI是\x1b[,用于启动ANSI转义码序列。 2是向右移动的字符数,C是向右移动的命令。


(*)一个很好的近似是你可以依赖ANSI代码,除非你需要支持Windows。

答案 1 :(得分:0)

你应该重写字符:

>>> print 'pototo\rpota'
potato

如果您不想重写它们,那么应该使用像curses这样的库来手动设置光标位置。