Почему экранирующий символ иногда выводится в интерактивном интерпретаторе Python? - PullRequest
3 голосов
/ 08 февраля 2020

Если я наберу это в интерактивном интерпретаторе Python:

>>> 'doesn\'t'
"doesn't"
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'

Почему во втором случае печатается escape-символ (\)? Я понимаю, что могу использовать функцию print(), чтобы избежать ее, т. Е. Не печатать ее.

1 Ответ

3 голосов
/ 08 февраля 2020

Одиночная кавычка должна быть экранирована, потому что строка отделяется одинарными кавычками. Если бы он не был экранирован, то это означало бы конец литерала.

'"Isn\'t," they said.'
^                    ^

Если бы строка воспроизводилась с двойными кавычками снаружи, тогда двойные кавычки нужно было бы экранировать:

"\"Isn't,\" they said."

Обе формы представляют один и тот же строковый литерал. Как это бывает, repr() выбирает использование одинарных кавычек и показывает это первым способом.

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