我注意到了 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'
>>>
我的问题是 - 当我在Python中打印'\ b'时,预期的行为是什么?为什么删除仅在特定情况下有效?
答案 0 :(得分:8)
扩展答案:退格键不会删除任何内容,它会将光标向左移动,然后它会被你写的内容所掩盖。如果您正在写一个可以显示过度打击的设备(例如老式的“硬拷贝”终端,其工作方式类似于打字机),那么您实际上会看到新字符位于旧字符之上。这就是真正的原因退格有这些语义。
在unix命令行上,shell可以设置为将退格解释为“擦除” - 除非它被设置为仅以这种方式处理删除。但这取决于阅读你输入的程序。
答案 1 :(得分:6)
正如Alexis在评论中所说,它将光标向后移动(向左移动一个字符)。然后在打印时,它会覆盖该字符(仅应用于当前文本行)
>>> print 'abc\b'
abc
>>> print 'abc\b\b\b'
abc
>>> print 'abc\b1'
ab1
>>> print 'abc\b\b\b123'
123
没有Python特定的内容,"backspace character weirdness"
证明了这一点