我有一个字符串,它可能包含也可能不包含语法上有效的 Python 字符串文字。如果是,我想将其转换为它所代表的字符串,否则我想引发错误。有没有比这更好的方法来实现这一点
# 'x' contains the putative string literal
s = ast.literal_eval(x)
if not isinstance(s, basestring):
raise ValueError("not a valid string literal: " + x)
特别是,由于这个字符串的来源,它可能包含repr
一个复杂对象,我不想浪费时间解析它然后把它扔掉。
另一种说法是,我想要float
或int
应用于字符串时的行为,仅适用于字符串。
[注意:现有的问题Python convert string literals to strings建议ast.literal_eval
,但这是我希望能够击败的。]