2017-12-09 3 views
2

Ich experimentiere mit dem Backspace-Zeichen \b in Python-Strings. Ich habe es versucht:Python Strings: Backspace am Ende der Zeichenfolge verhält sich anders

>>> s = "The dog\b barks" 
>>> print(s) 
The do barks 

Dies verhält sich wie erwartet. Das Zeichen g verschwindet aufgrund der Rücktaste \b. Jetzt

Ich versuche dies:

>>> s = "The dog barks\b" 
>>> print(s) 
The dog barks 

Seltsam ... der s Charakter nicht verschwunden. Warum?

Hinweis:
Ich arbeite auf einem Windows-PC 10 und haben diese Experimente in der Windows-Befehlszeile (das Terminal). Ich renne Python 3.6

+1

Ich habe gerade versucht in der Pycharm-Konsole und wenn es verschwindet. – Manuel

Antwort

1

Das ist kein Verhalten von python aber Ihr Ausgang StreamHandler. Die \b löscht das Zeichen davor nicht, es weist Ihr Ausgabehandler-Gerät (Terminal/Konsole) an, den Cursor rückwärts zu bewegen.

Was grundsätzlich passiert, ist, dass Sie den Cursor ein Zeichen nach links setzen und streamen, was folgt. Es sieht visuell so aus, als ob Sie ein space setzen, da das folgende Zeichen ein space ist.

In beiden Unix-basierten und Windows das Ausgangsverhalten ist das gleiche:

Unix-Test/Mac Terminal:

echo -e "Hello test\b" 
>Hello test 

Windows-Test/CMD/Powershell:

echo "Hello test`b" 
>Hello test 
+0

Danke! Sehr interessant. –

1

Python behandelt nicht die Backspace (\b) Zeichen speziell, aber Windows-Eingabeaufforderung (cmd.exe) behandelt die Rücktaste durch Bewegen des Cursors nach links ein Zeichen, dann den Rest der Zeichenfolge. Da es nichts mehr zu drucken gibt, macht das Bewegen des Cursors nach links nichts.

Verwandte Themen