Python 字符串:字符串末尾的退格键表现不同

Python strings: backspace at the end of string behaves differently

我正在试验 Python 字符串中的退格字符 \b。我试过这个:

>>> s = "The dog\b barks"
>>> print(s)
The do barks

这符合预期。由于 \b 退格,g 字符消失。

现在我试试这个:

>>> s = "The dog barks\b"
>>> print(s)
The dog barks

奇怪... s 字符没有消失。为什么?

:
我在 Windows 10 PC 上工作,并在 Windows cmd 提示符(终端)中进行了这些实验。我运行Python3.6

Python 不特殊处理退格 (\b) 字符,但 Windows 命令提示符 (cmd.exe) 通过将光标左移一个来处理退格字符,然后打印字符串的其余部分。因为没有什么可以打印了,所以向左移动光标实际上并没有做任何事情。

这不是 python 的行为,而是您的输出 StreamHandler\b 不会取消它前面的字符,它会指示您的输出处理程序设备 (terminal/console) 向后移动光标。

基本上发生的事情是,您将光标向左移动一个字符并继续播放接下来的内容。从视觉上看,您好像在输入 space,因为下一个字符是 space

基于 Unix 和 Windows 的输出行为相同:

Unix 测试/Mac终端:

echo -e "Hello test\b" 
>Hello test

Windows 测试/CMD/Powershell :

echo "Hello test`b"
>Hello test