我正在使用pyhocon
软件包,并且我希望将其中一个参数作为int / int除法给出。 conf文件如下所示:
{
var = 1/3
}
但是,这是我尝试得到的:
>>> from pyhocon import ConfigFactory
>>> conf = ConfigFactory.parse_file(conf_path)
>>> conf.var
'1/3'
>>> conf.get_float('var')
pyhocon.exceptions.ConfigException: var has type 'str' rather than 'float'
如何强制var
具有浮点类型? (不使用某种eval
)
答案 0 :(得分:1)
3/4
不是浮点数。 0.75
是。您需要先“计算”您的字符串。
使用
{
var = 0.75
}
相反。
或者:
import operator
k = operator.truediv( *map(int,"3/4".split("/"))) # conf.var
print(k)
进入0.75
答案 1 :(得分:0)
可能评估是最简单的
In [3]: conf['var'] = eval(conf['var'])
In [4]: conf.get_float('var')
Out[4]: 0.75
答案 2 :(得分:0)
如果要在程序中使用fractions
,请为其使用正确的数据类型:
import fractions
k = fractions.Fraction( "1/3" ) # you use conf.var instead of '1/3'
print(k)
print(float(k))
输出:
Fraction(1, 3)
0.3333333333333333
fraction.Fraction(string)
适用于您的conf.var