6

私が理解しているように、\b制御文字は前の文字を消去することは想定されていないため (これは\b+ a del 文字にもなります)、次のようなものが機能します。

>>> print 'pototo\b\b\ba'
potato

上書き禁止のスペースのように、前に進むための文字はありますか? 予想される使用法は次のようになります (私はこの文字を と呼びました\x):

>>> print 'pototo\r\x\x\xa'
potato

明らかに、タイプライターでは、通常のスペースでこれを問題なく行うことができます。しかし端末では、スペースはその下の文字を消去します。

私のユースケースは、遡及的に戻って文字ストリームの出力の特定の部分を色で装飾したい pexpect マッチングのようなシナリオであり、現在の行全体のキャッシュをメモリに保持する必要があるかどうか疑問に思っていますか否か。

4

2 に答える 2

3

端末(*)でANSIエスケープコードシーケンスを信頼できる場合は、次のようにカーソル転送(CUF)シーケンス「 CSInC 」を使用できます。

print "Pototo\b\b\ba\x1b[2Ces"

そして取得:

Potatoes

CSIは\x1b[であり、ANSIエスケープコードシーケンスを開始するために使用されます。2は右に移動する文字数、は右にC移動するコマンドです。


(*)Windowsをサポートする必要がない限り、ANSIコードに頼ることができます。

于 2012-12-10T12:30:34.603 に答える
0

文字を書き直す必要があります。

>>> print 'pototo\rpota'
potato

それらを書き換えたくない場合は、cursesなどのライブラリを使用してカーソル位置を手動で設定する必要があります。

于 2012-12-10T12:25:29.510 に答える