我想将字符串文字如r"r'\nasdf'"
转换为字符串(本例中为'\\nasdf'
)。Python将字符串文字转换为字符串
另一种情况:r"'\nasdf'"
至'\nasdf'
。 我希望你明白。
这很重要,因为我有一个python脚本解析器,它想知道字符串文字的确切内容。
是eval
一个巧妙的解决方案?字符串文字在之前被过滤(与tokenize
)并且不应该导致安全责任。没有任何高贵的解决方案比评估文字?解析器库可能?
编辑:增加了其他例子,以避免误解。
我想将字符串文字如r"r'\nasdf'"
转换为字符串(本例中为'\\nasdf'
)。Python将字符串文字转换为字符串
另一种情况:r"'\nasdf'"
至'\nasdf'
。 我希望你明白。
这很重要,因为我有一个python脚本解析器,它想知道字符串文字的确切内容。
是eval
一个巧妙的解决方案?字符串文字在之前被过滤(与tokenize
)并且不应该导致安全责任。没有任何高贵的解决方案比评估文字?解析器库可能?
编辑:增加了其他例子,以避免误解。
你想要的ast
module:
>>> import ast
>>> raw = r"r'\nasdf'"
>>> ast.literal_eval(raw)
'\\nasdf'
>>> raw = r"'\nasdf'"
>>> ast.literal_eval(raw)
'\nasdf'
这是评估包含Python源代码(不同于eval()
)/解析字符串的一种安全的方法。
是的,有:
>>> s = r'\nasdf'
>>> s.decode('string-escape')
'\nasdf'
对不起,我的问题不太清楚(我编辑)。这是一个字符串转换的原始字符串,不是字符串字符串转换。 –
这将是一个'原始'字符串,而不是'字面' –
我认为我没有制定我的问题是正确的,我试图再做正确的。我的意思是字符串文字,而不是原始字符串。 –
够清楚了。和literal_eval是更高贵的解决方案:) –