如何在python中解开反斜线转义的string?

假设我有一个string,它是另一个string的反斜线转义版本。 有没有简单的方法,在Python中,以避免string? 例如,我可以这样做:

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

然而,这涉及到一个(可能不可信的)string传递给eval(),这是一个安全风险。 标准库中是否有一个函数接受一个string并产生一个没有安全隐含的string?

 >>> print '"Hello,\\nworld!"'.decode('string_escape') "Hello, world!" 

你可以使用ast.literal_eval这是安全的:

安全地评估expression式节点或包含Pythonexpression式的string。 提供的string或节点可能只包含以下Python文字结构:string,数字,元组,列表,字典,布尔值和无。 (结束)

喜欢这个:

 >>> import ast >>> escaped_str = '"Hello,\\nworld!"' >>> print ast.literal_eval(escaped_str) Hello, world!