12

OS: Windows7

私の理解では、 \r はテキストをページの左側に移動します。

ただし、これを実行すると:

carriage_return = "I will use a carriage\rreturn"

print carriage_return

I got: return 馬車を使う

私が期待していたのは:リターン

4

4 に答える 4

5

これに追加するだけです。先頭に戻って行の内容を消去したい場合は、次のようにします。

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:░&lt;{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!")
于 2018-12-10T19:26:34.867 に答える