1

今日は、組み込み関数を学習していますchr\x08そして、ASCIIテーブル検索を通じて、バックスペースを意味することがわかりました。それで、私はそれで少し遊んだ。しかし、結果は私を混乱させました:

In [52]: print '1\x08'
1

In [53]: print '1\x082'
2

別の文字が続くだけで\x08、バックスペースのように動作するようですが、なぜこれが起こったのですか? 文字列でどの\x08ように動作しますか?

4

3 に答える 3

3

どちらの場合もバックスペースのように動作します。つまり、カーソルを 1 スペース戻します。ただし、他に何かを書かない限り、そこにあるものは削除されません。したがって、最初のケースでは 1 が残りますが、2 番目のケースでは 2 で上書きされます。

于 2015-12-11T07:10:18.367 に答える
1

Backspace はカーソルを 1 文字だけ移動するだけで、実際にカーソルを削除するわけではありません。たとえば、これは 193 になります。

print('123\x08\x089')

スペースを使用して実際に文字を「削除」できます...

于 2015-12-11T07:10:54.203 に答える
1

1---- backspaceカーソルを左の 1 スペースに移動するだけで、ワークまたは他のエディターを使用すると、左の 1 文字も削除されます。知っておくべきことは、もまたはbackspaceと同じ文字であるということです。1a

2---- ターミナルをデフォルトの出力デバイスとして、ファイルとして配置することもできます。

したがって、使用する場合

  print '1\x08'

これは、ファイル stdout にa1と aを書き込むことを意味します。backspace

ファイルを読み取ると、システムは を読み取り1 + breakspace1.

そして、あなたが使用する場合

  print '1\x082'

これは、ファイル stdout にa 1、 a 、backspaceおよび aを書き込むことを意味します。2

ファイルを読み取ると、システムは を取得します。印刷すると、バックスペースを使用すると最初のファイルがカバーされるため、1 + breakspace + 2のみが取得されます。21

詳細については、次のテスト コードを参照してください。

  if __name__ == "__main__":
      print "1\x08"
      print "1\x082"

      f = open("1.txt", "w")
      f.write("1\x08\x082")
      f.close();

      f = open("1.txt", "r")
      str = f.readlines( )
      print len(str), str
      for s in str:
      print "s=|" + s + "|"

ここに画像の説明を入力

s=|1\x08\x082|文字列表示を見ることができますs=2|。2回だ|1と表示されないので。backspace

于 2015-12-11T08:15:44.110 に答える