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

时间:2017-12-09 19:20:33

标签: python python-3.x backspace

我在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

2 个答案:

答案 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