Правильная вещь - использовать код «escape-escape» для декодирования строки.
>>> myString = "spam\\neggs"
>>> decoded_string = bytes(myString, "utf-8").decode("unicode_escape") # python3
>>> decoded_string = myString.decode('string_escape') # python2
>>> print(decoded_string)
spam
eggs
Не используйте AST или eval. Использование строковых кодеков намного безопаснее.
Что касается языков Python, _
не имеет никакого особого значения. Это - допустимое идентификатор точно так же, как _foo
, foo_
или _f_o_o_
.
Любое особое значение _
просто условно. Несколько падежей общи:
макет А называет, когда переменная не предназначается, чтобы использоваться, но имя требуется синтаксисом/семантикой.
# iteration disregarding content
sum(1 for _ in some_iterable)
# unpacking disregarding specific elements
head, *_ = values
# function disregarding its argument
def callback(_): return True
Много REPLs/shells хранят результат последнего выражения верхнего уровня к builtins._
.
специальный идентификатор
_
используется в интерактивном интерпретаторе для хранения результата последней оценки; это хранится вbuiltins
модуль. Если не в интерактивном режиме,_
не имеет никакого особого значения и не определяется. [ источник ]
из-за способа, которым имена ищутся, если не затененный глобальным или локальным _
определение, которое пустое _
отсылает к [1 113].
>>> 42
42
>>> f'the last answer is {_}'
'the last answer is 42'
>>> _ = 4 # shadow ``builtins._`` with global ``_``
>>> 23
23
>>> _
4
Примечание: Некоторые оболочки такой как [1 114] не присваивают [1 115], но особый случай _
.
В интернационализации контекста и локализации, _
используется в качестве псевдонима для основной функции перевода.
Возврат локализованный перевод сообщения, на основе текущего глобального домена, языка и каталога локали. Эта функция обычно искажается как _ () в локальном пространстве имен (см. примеры ниже).