尝试使用
抛出以下错误:
ast.literal_eval
评估f-strings时,出现了“节点或字符串格式错误”的 ValueError
错误提示:from ast import literal_eval
a = 10
literal_eval("f'test {a}'")
抛出以下错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<...> in <module>()
3 a = 10
4
----> 5 literal_eval("f'test {a}'")
C:\...\lib\ast.py in literal_eval(node_or_string)
83 return left - right
84 raise ValueError('malformed node or string: ' + repr(node))
---> 85 return _convert(node_or_string)
86
87
C:\...\lib\ast.py in _convert(node)
82 else:
83 return left - right
---> 84 raise ValueError('malformed node or string: ' + repr(node))
85 return _convert(node_or_string)
86
ValueError: malformed node or string: <_ast.JoinedStr object at 0x000001F20CE718D0>
然而,对于原始或二进制字符串,它可以正常工作,没有问题:
>>> literal_eval("r'This'")
'This'
>>> literal_eval("b'This'")
b'This'
我能否让ast.literal_eval
处理f-strings?如果可以,需要更改什么?
f'test {a}'
不是字面值,它执行了一次计算(使用FORMAT_VALUE
操作码)。 - TigerhawkT3