Python语句中的退格行为,在代码中打印'\ b'的正确行为是什么?

Sum*_*mod 8 python

可能重复:
退格字符怪异

我注意到1.如果我只打印退格键,即Python中的\ b序列,那么它是完全空白的.2.如果我打印字符后跟退格,即'sssss\b\b\b\b\b',那么它将打印多个's'字符但是如果我打印的内容像'ssss\b\b\b\baaaa ',然后退格,\ b,实际上就像我正在输入退格并删除's'字符.

我在Windows XP上使用Python 2.6.这是预期的行为吗?如果我尝试获得退格字符的长度,则打印为1.

这是我的测试代码 -

>>> print 'ssss\b\b\b\b\baaaaa'
aaaaa
>>> print 'ssssssss\b\b\b\b\baaaaa'
sssaaaaa
>>> print 'ssssssss\b\b\b\b\b'
ssssssss
>>> print 'ssssssss\b\b\b\b\baaaaa'
sssaaaaa
>>> print '\b\b\b\b\b'

>>>
Run Code Online (Sandbox Code Playgroud)

我的问题是 - 当我在Python中打印'\ b'时,预期的行为是什么?为什么删除仅在特定情况下有效?

ale*_*xis 8

扩展答案:退格键不会删除任何内容,它会将光标移动到左侧,然后它会被您所写的内容覆盖.如果您正在写一个可以显示重击的设备(例如老式的"硬拷贝"终端,其工作方式类似于打字机),那么您实际上会看到新字符位于旧字符之上.这就是退格有这些语义的真正原因.

在unix命令行上,shell可以设置为将退格解释为"擦除" - 除非它被设置为仅以这种方式处理删除.但这取决于读取输入的程序.


dbr*_*dbr 6

正如Alexis在评论中所说,它将光标向后移动(向左移动一个字符).然后在打印时,它会覆盖该字符(仅应用于当前文本行)

>>> print 'abc\b'
abc
>>> print 'abc\b\b\b'
abc
>>> print 'abc\b1'
ab1
>>> print 'abc\b\b\b123'
123
Run Code Online (Sandbox Code Playgroud)

没有Python具体,"退格角色古怪"证明了这一点