Python:\ b的表现与书的描述不同

时间:2017-02-22 16:05:49

标签: python

我正在阅读 automate_the_boring_stuff_with_python_2015 ,我得到了这个片段:

print(positionStr, end='')
print('\b' * len(positionStr), end='', flush=True)

其中positionStr是前面定义的字符串。我查看了python转义序列并看到\ b是退格但是出于某种原因,作者说它应该删除打印的字符串

  

要删除文本,请打印\ b退格转义字符。这个特别的   字符会删除屏幕上当前行末尾的字符。你在u的行使用字符串复制来生成一个包含\ b的字符串   字符作为存储在positionStr中的字符串的长度,其中包含   擦除上次打印的positionStr字符串的效果。

  1. 这与我在here(中间页面)
  2. 中看到的相矛盾
  3. 这与我的结果
  4. 不同

    正如你所看到的,我有一堆退格字符,我想我应该有(我运行了一个循环,我打印了所说的字符串,然后是\b字符串)

    现在,这本书是错的,还是我应该做些不同的工作?此外,如果这是错误的,有没有办法实现这一目标? (打印字符串,然后删除它)

    从图中可以看出,我使用的是python 3.5.3。在Windows 8.1

1 个答案:

答案 0 :(得分:2)

并非所有控制台都支持将\b字符作为删除字符,尤其是图形字符。

(当你把它写到文件时会发生同样的事情,之前的字符也不会被删除)

在本机shell中尝试您的示例(Windows或Linux可以正常工作),并且将正确删除这些字符。

Windows CMD:

>>> print("a\bc")
c

PyScripter(这就是我所拥有的):

>>> print("a\bc")
a<strange char>c