@immelnikoff
Изучаю БД

Почему не экранируется символ одинарной кавычки?

Почему не экранируется символ одинарной кавычки?
>>> '"Isn\'t," they said.'
'"Isn\'t," they said.'
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
vollossy
@vollossy
Веб-разработчик с небольшим опытом работы
Потому что то, что вы видите, это не строковое представление для строки(простите за тавтологию), а ее "техническое" представление. Попробуйте сделать
>>> print('"Isn\'t," they said.')
Дело в том, что каждый объект в python может иметь 2 метода: __repr__ и __str__. Первый отвечает за "техническое" представление, которое помогает однозначно идентифицировать объект и используется для отладки и в том числе в REPL, а второй за строковое представление, удобное для чтения человеком. Например, в случае с datetime.date(2021, 6, 1), __repr__ вернет 'datetime.date(2021, 6, 1)', а __str__: '2021-06-01'.

UPD: увидел обсуждение в комментариях касательно ' и "
> Почему в вышеуказанном примере бэкслэш выводится, в примере ниже - нет?
>>> "\"Yes,\" they said."
'"Yes," they said.'

Тут штука в том, что двойные кавычки это что-то вроде синтаксического сахара, который позволяет нам вставлять всякие непечатаемые символы, а также использовать переменные(как f-строки или r-строки). В итоге их отображение все равно приводит их к виду одинарных кавычек с соответствующим форматированием. Для одинарных кавычек обратный слеш при работе с двойными не нужен, поэтому он и не отображается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы