我是靠谱客的博主 淡淡摩托,最近开发中收集的这篇文章主要介绍python eval函数浮点数_创建数字浮点数64使用eval(),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我四处看看,没有找到任何可以创建的信息数字浮点数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()所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部