在Python语句中,打印'\b';密码?
可能重复:在Python语句中,打印'\b';密码?,python,Python,可能重复: 我注意到了 1.如果我只打印backspaces,即Python中的\b序列,那么它是完全空白的。 2.如果我打印后跟空格的字符,即“sssss\b\b\b\b”,则它将打印多个“s”字符 但是如果我打印类似“ssss\b\b\b\baaaa”的内容,那么退格,\b实际上就像我键入退格并删除“s”字符一样 我正在Windows XP上使用Python 2.6。这是预期的行为。若我尝试获取退格字符的长度,它将打印为1 这是我的测试代码- >>> print 'sss
我注意到了 1.如果我只打印backspaces,即Python中的\b序列,那么它是完全空白的。 2.如果我打印后跟空格的字符,即“sssss\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”时,预期的行为是什么?为什么删除只在特定情况下有效?正如Alexis在评论中所说,它将光标向后移动(向左移动一个字符)。然后,当您打印时,它将覆盖字符(仅适用于当前文本行)
没有特定于Python的内容,扩展答案证明了这一点:退格不会删除任何内容,它会将光标向左移动,并被您随后编写的内容覆盖。如果你正在向一个可以显示超链接的设备(比如老式的“硬拷贝”终端,它的工作原理类似于打字机),你实际上会在旧字符的上面看到新字符。这就是backspace具有这些语义的真正原因
在unix命令行上,可以将shell设置为将backspace解释为“擦除”——除非它设置为仅以这种方式处理delete。但这取决于程序读取您的输入。退格不会删除任何内容,它会将光标向左移动,然后被您随后编写的内容覆盖。当然是这样,但我不喜欢答案(作者似乎从未听说过硬拷贝终端),所以我在这里添加了我自己的。没错,这在作为文件输出到设备时很容易看到
>>> print 'abc\b'
abc
>>> print 'abc\b\b\b'
abc
>>> print 'abc\b1'
ab1
>>> print 'abc\b\b\b123'
123