6

\b我了解,控制字符不应该删除前一个字符(这也将是\b+ 一个 del 字符),所以这样的事情是有效的:

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

是否有向前移动的字符,例如不可覆盖的空间?预期的用法类似于(我称这个字符为\x):

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

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

我的用例是一种预期匹配的场景,我想回过头来用颜色装饰字符流输出的某些部分,我想知道是否有必要在内存中保留整个当前行的缓存或不。

4

2 回答 2

3

如果您可以依赖终端 (*) 中的ANSI 转义码序列,则可以使用 Cursor Forward (CUF) 序列“CSI n C”,如下所示:

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

并得到:

Potatoes

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


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

于 2012-12-10T12:30:34.603 回答
0

你应该重写字符:

>>> print 'pototo\rpota'
potato

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

于 2012-12-10T12:25:29.510 回答