我在Python字符串中试验退格字符\b
。我试过这个:
>>> s = "The dog\b barks"
>>> print(s)
The do barks
这表现得如预期。由于g
退格,\b
字符消失了。
现在我试试这个:
>>> s = "The dog barks\b"
>>> print(s)
The dog barks
奇怪...... s
角色并没有消失。为什么呢?
注意:
我在Windows 10 PC上工作,并在Windows cmd提示符(终端)中进行了这些实验。我运行Python 3.6
答案 0 :(得分:1)
Python并没有特别处理退格(\b
)字符,但是Windows命令提示符(cmd.exe
)通过将光标向左移动一个字符来处理退格,然后打印其余部分串。因为没有什么可以打印,所以向左移动光标实际上并没有做任何事情。
答案 1 :(得分:1)
这不是python
的行为,而是您的输出StreamHandler
。 \b
不会取消之前的字符,它会指示输出处理程序设备(终端/控制台)向后移动光标。
基本上发生的是,您将光标放在左侧一个字符并继续流式传输后续内容。在视觉上看起来你正在放置space
,因为下一个字符是space
。
在基于Unix和Windows的情况下,输出行为都是相同的:
Unix测试/ Mac终端:
echo -e "Hello test\b"
>Hello test
Windows测试/ CMD / Powershell:
echo "Hello test`b"
>Hello test