pyhocon-强制变量具有浮点类型(而不是str)

时间:2019-04-03 21:17:52

标签: python python-3.x configuration

我正在使用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

3 个答案:

答案 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