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

问题描述 投票:0回答:3

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

python python-3.x configuration
3个回答
1
投票

3/4不是浮动的。 0.75是。你需要先“计算”你的字符串。

使用

{
  var = 0.75
}

代替。


或者:

import operator  

k =  operator.truediv( *map(int,"3/4".split("/")))  # conf.var
print(k)

0.75


0
投票

可能eval是最简单的

In [3]: conf['var'] = eval(conf['var'])  
In [4]: conf.get_float('var')                                                                                                                                                   
Out[4]: 0.75

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工作

© www.soinside.com 2019 - 2024. All rights reserved.