1. ホーム
  2. python

[解決済み] Python文のBackspaceの動作、コード内で'˶'˶'したときの正しい動作は?[重複] [重複] [重複] [重複] [重複] [重複

2022-02-27 22:05:12

質問

<ブロッククオート

重複の可能性があります。
バックスペース文字の怪

私が気づいたのは 1. バックスペースだけ、つまりPythonでいうところの "sequence of \b "を印刷すると、真っ白になってしまいます。 2. 2. If I print characters followed by backspaces i.e. 'sssssbbētzbētzb', then it will print the multiple 's' characters しかし、もし私が'ssssbētzk'のようなものを印刷するなら、バックスペースの, \b は、私がバックスペースをタイプしているように実際に振る舞い、's'文字を削除します。

Windows XPでPython2.6を使用しています。これは期待された動作なのでしょうか。バックスペース文字の長さを取得しようとすると、1 と表示されます。

以下は私のテストコードです。

>>> print 'ssss\b\b\b\b\baaaaa'
aaaaa
>>> print 'ssssssss\b\b\b\b\baaaaa'
sssaaaaa
>>> print 'ssssssss\b\b\b\b\b'
ssssssss
>>> print 'ssssssss\b\b\b\b\baaaaa'
sssaaaaa
>>> print '\b\b\b\b\b'

>>>

Pythonで'˶'˶'をprintした時に期待される動作と、なぜある特定のケースだけ削除がうまくいくのか、という質問です。

どのように解決するのですか?

回答を拡大します。バックスペースは何も削除せず、カーソルを左に移動させ、その後に書いたもので覆い隠されてしまうのです。もしあなたが上書きを表示できるデバイス(例えばタイプライターのように動作する昔ながらのquot;ハードコピー"ターミナル)に書いていたなら、実際には古い文字の上に新しい文字が表示されることになります。これが リアル バックスペースがこのような意味を持つ理由です。

unixのコマンドラインでは、シェルはbackspaceを"erase"と解釈するように設定することができます。しかし、これは入力を読むプログラム次第です。