2017-02-22 33 views
0

我读automate_the_boring_stuff_with_python_2015行为不同,我得到这个片段:的Python: b。从书中的描述

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

其中positionStr是前面定义的字符串。我看了看蟒蛇转义序列,看到\ b为退格,但由于某种原因,笔者认为它应该删除打印字符串

要删除文本,打印\ b退格转义字符。这个特殊的 字符会擦除屏幕上当前行末尾的字符。 u处的一行使用字符串复制来生成一个字符串,其中包含的字符数与位置positionStr中存储的字符串的长度一样多,该字符串的 效果会擦除上次打印的positionStr字符串。

  1. 这个矛盾我在here(中旬页表)
  2. 这不同于我的结果

看到正如你可以看到我有一大堆退格字符的,因为我猜我应该有(我跑了一个循环,我打印的字符串,然后\b字符串)

现在,这本书是错的,或者我应该做的东西二为了它的工作而不同?另外,如果这是错误的,是否有办法实现这个目标? (打印字符串,然后删除它)

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

+0

今后,请发布一个新的问题之前,谷歌搜索。 – TigerhawkT3

回答

2

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

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

试试你的例子在本机外壳(Windows或Linux将工作)和字符将被正确删除。

的Windows CMD:

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

PyScripter(这就是我):

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

没有太多需要回答这样一个共同的副本。 – TigerhawkT3