Как не выйти из оставленной из обратной косой черты строки?

Предположим, что у меня есть строка, которая является оставленной из обратной косой черты версией другой строки. Существует ли простой способ, в Python, не выйти из строки? Я мог, например, сделать:

>>> escaped_str = '"Hello,\\nworld!"'
>>> raw_str = eval(escaped_str)
>>> print raw_str
Hello,
world!
>>> 

Однако это включает передачу (возможно недоверяемый) строка к оценке (), который является угрозой безопасности. Существует ли функция в стандартном lib, который берет строку и производит строку без последствий безопасности?

89
задан martineau 30 June 2019 в 21:07
поделиться

2 ответа

>>> print '"Hello,\\nworld!"'.decode('string_escape')
"Hello,
world!"
129
ответ дан 24 November 2019 в 07:16
поделиться

Вы можете использовать ] ast.literal_eval , что безопасно:

Безопасное вычисление узла выражения или строки, содержащей Python выражение. Предоставленная строка или узел может состоять только из следующие литеральные структуры Python: строки, числа, кортежи, списки, dicts, booleans и None. (КОНЕЦ)

Как это:

>>> import ast
>>> escaped_str = '"Hello,\\nworld!"'
>>> print ast.literal_eval(escaped_str)
Hello,
world!
31
ответ дан 24 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: