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
我正在试验 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