OS: Windows7
私の理解では、 \r はテキストをページの左側に移動します。
ただし、これを実行すると:
carriage_return = "I will use a carriage\rreturn"
print carriage_return
I got: return 馬車を使う
私が期待していたのは:リターン
OS: Windows7
私の理解では、 \r はテキストをページの左側に移動します。
ただし、これを実行すると:
carriage_return = "I will use a carriage\rreturn"
print carriage_return
I got: return 馬車を使う
私が期待していたのは:リターン
これに追加するだけです。先頭に戻って行の内容を消去したい場合は、次のようにします。
text = "Here's a piece of text I want to overwrite"
repl = "BALEETED!" # What we want to write
print(text, end="\r") # Write the text and return
print(f'\r{repl: <{len(text)}}')
最後の行は少し説明が必要かもしれないので、分解します。
f'SOMETHING {var}'
と等価な f-string'SOMETHING {}'.format('HERE')
です。Python 3.6+で利用可能です
ハードコーディングされた変数の値を置き換えるには、最初に戻って置換文字列を書き、その後に元のテキストを置き換えるのに十分なスペースを追加します。この場合、おそらくより明確な古いフォーマット方法を使用したい場合:
print('\r{0: <{1}}'.format(repl, len(text)))
# Which becomes when extrapolated:
print('BALEETED ')
ボーナス ポイントについては、スペースを使用する必要はありません。何でも使用できます。
print('\r{0:░<{1}}'.format(repl, len(text)))
# Which becomes when extrapolated:
print('DELETED░░░░░░░░░░░░░░░░░░░░░░░░░░░░░')
または、追加のボーナスとして、関数にします。
from time import sleep
def overprint(text,repl, t=1, char=" "):
print(text, end="\r")
sleep(t)
print('\r{0:{1}<{2}}'.format(repl, char, len(text)))
overprint("The bomb will explode in one sec...", "BOOM!")