概述
我四处看看,没有找到任何可以创建的信息数字浮点数64使用内置的eval函数。在
我想要的是:In [1]: x = eval("1.0")
In [2]: type(x)
Out[2]:
收件人:
^{pr2}$
真正的问题比上面的简单示例更糟糕,因为传递给eval的参数通常是一个包含许多键和值的字典。所以不可能使用这样的东西:numpy.float64("1.0")。在
为了让您了解我正在处理的实际数据,下面是字符串的外观(它是从文件中读取的):data_str = '{"var_x": {"value": 1.23, "error": 0.25, "unit": "unit name"},
"var_y": {"value": 1e+4, "error": 1.3e1, "log": False},
"var_z": ["a", {"x":1, "y":2}, (1, 2, 3), None]'
data = eval(data_str)
然后,我希望type(data["var_x"]["value"])返回{}
你们有什么建议吗。我错过了一个明显的方法吗?在
编辑
我将在data_str中处理的数字精度不会超过15-16位数。
因此,将字符串转换为float或{}对于这个目的来说并不重要。但是这些值会传递给一些复杂的函数,乘以,除以。。。因此,为了避免任何错误传播,我必须使用numpy.float64。
一种解决方法是将任何eval转换为float,但最好使用eval进行直接解释。在
编辑2
我想知道为什么这样不行:In [1]: import numpy as np
In [2]: x = eval("1.4", {"__builtins__":None, "np":np}, {"float":np.float64})
In [3]: type(x)
Out[3]:
我想通过在eval globals中将“uBuiltins”定义为None可以避免它加载float的默认定义,我在局部变量中重新定义了这个定义。。。从eval命名空间中取出(或替换)内建类型似乎是不可能的(比如float,int…)。任何关于这方面的线索都是受欢迎的:)
最后
以上就是淡淡摩托为你收集整理的python eval函数浮点数_创建数字浮点数64使用eval()的全部内容,希望文章能够帮你解决python eval函数浮点数_创建数字浮点数64使用eval()所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复