Поведение Backspace в выражении Python, каково правильное поведение печати '\b' в коде?

Возможный дубликат:
Backspace странность персонажа

Я заметил, что 1. Если я печатаю только символы возврата, т. Е. Последовательность \ b в Python, то она полностью пуста. 2. Если я печатаю символы, за которыми следуют символы возврата, то есть 'sssss \ b \ b \ b \ b \ b', то он печатает несколько символов 's'. Но если я печатаю что-то вроде 'ssss \ b \ b \ b \ baaaa ', тогда символ возврата \ b фактически будет действовать, как будто я набираю символ возврата и удаляю символы' s '.

Я использую Python 2.6 на Windows XP. Это ожидаемое поведение. Если я попытаюсь получить длину символа возврата, он будет напечатан как 1.

Вот мой тестовый код -

>>> print 'ssss\b\b\b\b\baaaaa'
aaaaa
>>> print 'ssssssss\b\b\b\b\baaaaa'
sssaaaaa
>>> print 'ssssssss\b\b\b\b\b'
ssssssss
>>> print 'ssssssss\b\b\b\b\baaaaa'
sssaaaaa
>>> print '\b\b\b\b\b'

>>>

Мой вопрос: каково ожидаемое поведение, когда я печатаю '\ b' в Python и почему удаление работает только в конкретном случае?

2 ответа

Решение

Расширенный ответ: Backspace ничего не удаляет, он перемещает курсор влево и покрывается тем, что вы пишете потом. Если бы вы писали на устройство, которое может отображать перенапряжение (например, старомодный терминал "твердой копии", который работает как пишущая машинка), вы бы фактически увидели нового персонажа поверх старого. Это реальная причина, по которой backspace обладает такой семантикой.

В командной строке unix оболочка может быть настроена на интерпретацию backspace как означающего "стирание"- если только она не настроена только на удаление таким образом. Но это зависит от программы, читающей ваш вклад.

Как сказал Алексис в комментарии, он перемещает курсор назад (влево на один символ). Затем, когда вы печатаете, он перезаписывает символ (применяется только к текущей строке текста)

>>> print 'abc\b'
abc
>>> print 'abc\b\b\b'
abc
>>> print 'abc\b1'
ab1
>>> print 'abc\b\b\b123'
123

Ничего специфичного для Python, о чем свидетельствует "проводимость символов возврата"

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