在Python语句中的退格键行为,'\b'的正确打印方式是什么?

2024-06-17 12:09:38 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
backspace character weirdness

我注意到 一。如果我只打印backspaces,即Python中的一个\b序列,那么它是完全空白的。 2。如果我打印字符后接空格,即“sssss\b\b\b\b”,则它将打印多个“s”字符 但如果我打印类似“ssss\b\b\b\baaaa”的内容,那么backspace实际上就好像我在键入backspace并删除“s”字符一样。

我在Windows XP上使用Python 2.6。这是预期的行为吗。如果我尝试获取退格字符的长度,则将其打印为1。

这是我的测试代码-

>>> print 'ssss\b\b\b\b\baaaaa'
aaaaa
>>> print 'ssssssss\b\b\b\b\baaaaa'
sssaaaaa
>>> print 'ssssssss\b\b\b\b\b'
ssssssss
>>> print 'ssssssss\b\b\b\b\baaaaa'
sssaaaaa
>>> print '\b\b\b\b\b'

>>>

我的问题是-当我在Python中打印'\b'时,预期的行为是什么?为什么删除只在特定情况下有效?


Tags: 序列字符空白空格printcharacterduplicatepossible
2条回答

正如亚历克西斯在评论中所说,它将光标移回(向左移动一个字符)。然后打印时,它会覆盖字符(仅应用于当前文本行)

>>> print 'abc\b'
abc
>>> print 'abc\b\b\b'
abc
>>> print 'abc\b1'
ab1
>>> print 'abc\b\b\b123'
123

没有特定于Python的内容,如"backspace character weirdness"

扩展答案:backspace不会删除任何内容,它会将光标向左移动,然后它会被您随后编写的内容所覆盖。如果你用的是一种可以显示过度排字的设备(比如老式的“硬拷贝”终端,它的工作原理类似于打字机),你会在旧的终端上看到新的字符。这就是backspace有这些语义的原因。

在unix命令行中,可以将shell设置为将backspace解释为“erase”的意思,除非将其设置为仅以这种方式处理delete。但这取决于程序读取你的输入。

相关问题 更多 >