Python 3: есть ли необходимость в использовании кодировки unicode_escape? - PullRequest
0 голосов
/ 18 ноября 2018

Эта ссылка перечисляет некоторые специфичные для Python кодировки.

Одна из кодировок - "unicode_escape".

Я просто пытаюсь понять, действительно ли нужна эта специальная кодировка?

>>> l = r'C:\Users\userx\toot'
>>> l
'C:\\Users\\userx\\toot'
>>> l.encode('unicode_escape').decode()
'C:\\\\Users\\\\userx\\\\toot'

Если вы могли видеть выше, 'l', который является объектом Unicode, уже позаботился о том, чтобы избежать обратной косой черты. Преобразование его в кодировку "unicode_escape" добавляет еще один набор экранированных обратных слешей, который не имеет для меня никакого смысла.

Вопросы:

  1. Действительно ли нужна кодировка "unicode_escape"?
  2. почему "unicode_escape" добавил еще один набор обратных косых черт выше?

1 Ответ

0 голосов
/ 18 ноября 2018

Цитирование документа, который вы связали :

Кодировка, подходящая для содержимого литерала Unicode в кодировке ASCII исходного кода Python, за исключением того, что кавычки не экранируются.Декодирует из исходного кода Latin-1.Помните, что исходный код Python на самом деле использует UTF-8 по умолчанию.

Таким образом, print(l.encode('unicode_escape').decode()) делает что-то почти точно эквивалентное print(repr(l)), за исключением того, что он не добавляеткавычки снаружи и экранирующие кавычки внутри строки.

Когда вы выключаете print(), REPL выполняет значение по умолчанию repr(), поэтому вы получаете обратную косую черту, дважды экранированную - точно то же самоекак происходит, когда вы запускаете >>> repr(l).

...