Строки Python: Backspace в конце строки ведет себя по-разному

Я экспериментирую с персонажем Backspace \b в строках Python. Я попробовал это:

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

Это ведет себя как ожидалось. g персонаж исчезает из-за \b Забой.

Теперь я пытаюсь это:

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

Странно... s персонаж не исчез. Зачем?

Примечание:
Я работаю на ПК с Windows 10 и проводил эти эксперименты в командной строке Windows cmd (терминал). Я запускаю Python 3.6

2 ответа

Решение

Это не поведение python но ваш вывод StreamHandler, \b не отменяет символ перед ним, он инструктирует ваше устройство вывода вывода (терминал / консоль) переместить курсор назад.

Что в основном происходит, так это то, что вы помещаете курсор на один символ влево и продолжаете потоковое воспроизведение следующего. Это визуально выглядит, как вы кладете space как следующий следующий символspace,

И в Unix, и в Windows поведение вывода одинаково:

Тест Unix / Терминал Mac:

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

Тест Windows / CMD / Powershell:

echo "Hello test`b"
>Hello test

Python не обрабатывает возврат (\b) символ специально, но командная строка Windows (cmd.exe) обрабатывает возврат, перемещая курсор влево на один символ, а затем печатая остальную часть строки. Поскольку печатать нечего, перемещение курсора влево ничего не делает.

Другие вопросы по тегам