2017-02-18 54 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 

希望這有助於。 :)