【问题标题】:How can we achieve the functionality like eval with ast.literal_eval我们如何使用 ast.literal_eval 实现类似 eval 的功能
【发布时间】:2020-09-07 02:16:14
【问题描述】:

eval 我可以得到以下信息:

str1 = "23145"
str2 = "str1"
print(str2)

输出:

23145

工作得很好。

ast.literal_eval 未按预期工作:

import ast
print(ast.literal_eval(str2))

获取:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Volumes/app/python/anaconda3/lib/python3.7/ast.py", line 91, in literal_eval
    return _convert(node_or_string)
  File "/Volumes/app/python/anaconda3/lib/python3.7/ast.py", line 90, in _convert
    return _convert_signed_num(node)
  File "/Volumes/app/python/anaconda3/lib/python3.7/ast.py", line 63, in _convert_signed_num
    return _convert_num(node)
  File "/Volumes/app/python/anaconda3/lib/python3.7/ast.py", line 55, in _convert_num
    raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: <_ast.Name object at 0x10ce34190>

【问题讨论】:

标签: python


【解决方案1】:

使用 globals() 得到解决方案。

str1 = “shiva”
str2 = “str1"
print(globals()[str2])

O/P:湿婆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2010-12-15
    • 2013-02-18
    相关资源
    最近更新 更多