Строки 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
) обрабатывает возврат, перемещая курсор влево на один символ, а затем печатая остальную часть строки. Поскольку печатать нечего, перемещение курсора влево ничего не делает.