Почему \ b не работает с последним индексированным символом строки? - PullRequest
0 голосов
/ 18 февраля 2020

1 Ответ

1 голос
/ 18 февраля 2020

Это связано с тем, как терминал интерпретирует escape-символы. О сообщалось за Python 2 несколько лет назад. Цитата:

Python сама по себе не обрабатывает backspace специально. То, что вы, вероятно, видите, это терминал, интерпретирующий клавишу возврата, особенно путем перемещения курсора влево (без стирания чего-либо).

Это означает, что если у вас есть символ после \b, терминал переместит курсор влево и «заменит» оригинальный символ новым. Если других символов нет, ничто не заменит старого символа.

Попытка передать вывод в hexdump, как показано в вашем примере:

$ python3.8 -c 
'print("abc#\bde#\bf#\bghi#\bjklmn#\bop\b")' | hexdump -C
00000000  61 62 63 23 08 64 65 23  08 66 23 08 67 68 69 23  |abc#.de#.f#.ghi#|
00000010  08 6a 6b 6c 6d 6e 23 08  6f 70 08 0a              |.jklmn#.op..|
0000001c

Вы можете заметить символ 08 там (\b).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...