2017-05-17 1 views
2
>>> print('x\b')  
x 
>>> print('x\ba')  
a  
>>> print('xyz\ba')  
xya 

Warum löscht es nicht das Zeichen 'x' in der ersten Druckanweisung?Escape Character b in Python (3.4.2)

+7

es tut. Der Cursor wird um ein Zeichen zurückgesetzt, aber nichts überschreibt das bereits auf dem Bildschirm angezeigte "x". Rückschritt ist nicht dasselbe wie Löschen. – hop

+0

Um dies zu überprüfen, versuchen Sie z.B. 'print (" 123 \ b \ b4 ")', Ausdruck '143' –

+1

Auch mit' "123 \ b \ b4" 'ist es technisch bis zum Terminal möglich, ob die' 2' * gelöscht * wird oder nicht. das Terminal wäre frei, ein kombiniertes 2/4 zu zeichnen, anstatt beispielsweise das 2 vollständig zu überschreiben. – chepner

Antwort

4

Kurz gesagt: \b ist mehr ein Cursor eins links als das vorherige entfernen.

Rück \b tut entfernen nicht das Zeichen, das vor dem \b platziert wird: es setzt den Cursor einen zurück (da möglich ist, sonst nichts getan wird). Wenn Sie nun andere Zeichen schreiben, wird das alte Zeichen überschrieben. Vergleichen Sie es mit einer alten Schreibmaschine ohne Korrekturband. Oder so Wikipedia article sagt:

8 (Backspace, BS, \b, ^H), verwendet, um entweder das letzte Zeichen gedruckt zu löschen oder zu Aufdruck es.

Nehmen wir zum Beispiel die folgenden Druck Aussage:

>>> print('aaa\b\bb') 
aba 

Was tatsächlich passiert ist (caret ^ zeigt die Positionierung des Cursors):

 
^ 

a 
^ 

aa 
^

aaa 
^

aaa 
^

aaa 
^ 

aba 
    ^
Verwandte Themen