为什么'\ b'看起来像Python中句子的最后一个字符一样无效?

时间:2016-08-29 10:22:26

标签: python character

我对'\ b'感到困惑。 我知道'\ b'表示退格,但在Python中,如果句子的最后一个字符似乎无效。

示例:

>>print 'abc\be'
>>abe
>>print 'abc\b'
>>abc

为什么?

另外一个关于OSX / python2.7.10 IPython 的例子:

>> import sys
>> sys.stdout.write('abc\b')
>> abc
>> sys.stdout.write('abc\be')
>> abe

1 个答案:

答案 0 :(得分:4)

print完成后会有隐含的换行符,这会在\b被回显后立即生成换行符。这会导致光标移动到下一行,因此不会有任何覆盖前一行c的内容。

如果你做了类似的事情:

print 'abc\b', 'def'

你会看到如下输出:

ab def

即。它不是句子末尾的“无效”,只是因为你立即打印换行符,没有任何机会可以覆盖退回的角色。

为了使这一点更清晰(希望如此) - 直接在python中输入行:

print会添加换行符,如果我们使用sys.stdout.write,则不会自动添加换行符:

>>> import sys
>>> sys.stdout.write('abc')
abc>>> sys.stdout.write('abc\b')
ab>>>