2017-02-18 53 views
1

我用Python写一个程序,并要替换与另一个字符终端打印的最后一个字符。删除最后一个打印的字符蟒蛇

的伪码:

print "Ofen", 
print "\b", # NOT NECCESARILY \b, BUT the wanted print statement that will erase the last character printed 
print "r" 

我使用的Windows8操作系统,Python 2.7版,并定期解释。

所有我看到这样的选项远远没有为我工作。 (如:\010,'\033[#D'(#是1),'\r')。

这些选项都建议在其他堆栈溢出的问题或其他资源,似乎没有为我工作。

编辑:也使用sys.stdout.write不会改变影响。它只是不会擦除最后打印的字符。相反,使用sys.stdout.write的时候,我的输出是:

Ofenr # with a square before 'r' 

我的问题:

  1. 为什么不把这些选项的作用?
  2. 如何获得所需的输出?
  3. 这与Windows操作系统或Python 2.7有关吗?
  4. 当我发现如何做到这一点,是它可以手动删除(使用橡皮擦通缉),删除打印在python的print声明'\n'
+0

刚才是你拒绝我的编辑,然后贴上我的编辑为你自己? –

+0

不,我没有,社区拒绝你的编辑,我批准了它。 –

+0

哦,我明白了。我很困惑,因为我的活动说编辑被拒绝了,但我看到了这里的变化。抱歉! –

回答

3

在python中使用print时,会添加换行符(又名'\n')。您应该使用sys.stdout.write()

import sys 
sys.stdout.write("Ofen") 
sys.stdout.write("\b") 
sys.stdout.write("r") 
sys.stdout.flush() 

输出:Ofer

+0

我编辑了我的问题 - 这不起作用。在使用sys.stdout时,''\ b''确实是正确的字符吗? –

+0

它应该工作,你在尝试什么? [这里](https://docs.python.org/2.0/ref/strings.html)你有一个字符串文字列表。 –

+0

只有当我使用冲洗它按照通缉。这是为什么?你能解答我的第四个问题吗?为什么不这样做?它也与冲洗有关吗? –

-1

我想串剥离会帮助你。保存输入并将字符串打印到length of string -1

实例

x = "Ofen" 
print (x[:-1] + "r") 

会给你的结果

Ofer 

希望这有助于。 :)