Python将字符串文字转换为字符串

时间:2012-05-08 07:58:09

标签: python string string-literals

我想将r"r'\nasdf'"之类的字符串文字转换为字符串(在这种情况下为'\\nasdf')。

另一种情况:r"'\nasdf'"'\nasdf'。 我希望你明白。

这很重要,因为我有一个python脚本解析器,想要知道字符串文字的确切内容。

eval是一个聪明的解决方案吗?字符串文字在之前被过滤(使用tokenize)并且不应该导致安全责任。除了评估文字之外,还没有任何更高贵的解决方案吗?解析器库可能吗?

修改:添加了其他示例,以避免误解。

2 个答案:

答案 0 :(得分:19)

你想要ast module

>>> import ast
>>> raw = r"r'\nasdf'"
>>> ast.literal_eval(raw)
'\\nasdf'
>>> raw = r"'\nasdf'"
>>> ast.literal_eval(raw)
'\nasdf'

这是一种评估/解析包含Python源代码的字符串的安全方法(与eval()不同)。

答案 1 :(得分:9)

是的,有:

>>> s = r'\nasdf'
>>> s.decode('string-escape')
'\nasdf'