预期:
>>> print "I print\b\b Backspace\b\b!"
I pri Backspa!
>>> print "I print\b\b Backspace\b\b\b!"
I pri Backsp!
观察到的:
>>> print "I print\b\b Backspace\b\b!"
I pri Backspa!e
>>> print "I print\b\b Backspace\b\b\b!"
I pri Backsp!ce
为什么'e'和'ce'没有被删除'!'插入
答案 0 :(得分:4)
你没有删除它们;你只是退缩了。前进将覆盖以前的字符,但退格在备份时不会擦除。你想要
print "I print\b\b Backspace\b\b !"
...看......
I pri Backspa !
如果您想要"完整效果",您必须退格并在备份时覆盖空格...然后您可以继续前进。像
这样的东西print "Backspace" + 2*"\b \b" + "!"
您可以根据需要多次使用乘数;它是一个小主题。上面一行显示
Backspa!
答案 1 :(得分:1)
\b
字符将滑架向后移动一个空格,类似于\r
将滑架一直移回到行首的方式。如果你没有覆盖你备份的角色,他们仍然会在那里。
>>> print "I print\b\b Backspace\b\b!"
I pri Backspa!e
>>> print "I print\b\b Backspace\b\b! "
I pri Backspa!
答案 2 :(得分:1)
\b
也称为后退空间将光标向后移动1。
退格键不会删除任何内容,它会将光标向左移动,然后它会被你写的内容所掩盖。
让我们用你的例子来理解这一点:
"I print\b\b Backspace\b\b!" # original string passed to "print"
# ^^ * * ^^ * *
# 12 1 2 34 3 4
执行*1
和*2
后,光标位于^1
。因此,^1
被空格' '
取代,^2
被B
取代(\b
后面的字符
执行*3
和*4
后,光标位于^3
,并被!
取代。由于!
之后没有任何内容,^4
保持不变,否则其他字符将替换为下一个字符。
因此,在屏幕上打印的结果内容如下:
I pri Backspa!e