2017-02-18 10 views
1

私はPythonでプログラムを書いており、端末に最後に印刷された文字を別の文字に置き換えたい。最後に印刷された文字を削除するpython

擬似コードは次のとおりです。

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

私はWindows8 OS、Pythonの2.7、および定期的なインタプリタを使用しています。

私がこれまでに見た選択肢はすべて私のためには役に立たなかった。 (\010,'\033[#D'(#は1)、'\r'など)。

これらのオプションは、他のスタックオーバーフローの質問や他のリソースに示唆されたと私のために動作するようには思えません。

EDITsys.stdout.writeを使用しても影響は変わりません。最後に印刷された文字は消去されません。 sys.stdout.writeを使用している場合代わりに、私の出力は次のようになります。

Ofenr # with a square before 'r' 

私の質問:これらのオプションが機能しないのはなぜ

  1. 希望の出力を得るにはどうすればよいですか?
  2. これはWindows OSまたはPython 2.7に関連していますか?
  3. 私はそれを行う方法を見つけたとき、それは(希望消しゴムを使用して)手動で消去することが可能で、Pythonのprint文で印刷され'\n'を削除しますか?
+0

あなたは自分の編集を拒否して自分の編集を貼り付けましたか? –

+0

いいえ、私のコミュニティはあなたの編集を拒否し、私はそれを承認しました。 –

+0

ああ、私は参照してください。私の活動は編集が拒否されたと言っていたので混乱しましたが、ここで変更が見られました。ごめんなさい! –

答えて

3

printをPythonで使用すると、改行(別名'\n')が追加されます。代わりにsys.stdout.write()を使用してください。

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

出力:Ofer

+0

私は自分の質問を編集しました - これはうまくいきません。 "\ b"はsys.stdoutの使用時に本当に正しい文字ですか? –

+0

それはうまくいくはずです、何をしようとしていますか? [Here](https://docs.python.org/2.0/ref/strings.html)には、文字列リテラルのリストがあります。 –

+0

私がフラッシュを使用したときだけ、それは必要なものとして機能しました。何故ですか?私の4番目の質問にも対処できますか?なぜそれは働かないのですか?それはあまりにもフラッシュする必要がありますか? –

-1

私は、文字列のストリッピングはあなたを助けると思います。入力を保存して、length of string -1までの文字列を印刷してください。

インスタンス

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

はあなたの結果

Ofer 

・ホープこのことができますを与えるだろう。 :)

関連する問題