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

2024-06-01 12:41:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是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使用float类型?(不使用某种eval


Tags: 文件pathfromimport参数getparsevar
3条回答

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

使用

{
  var = 0.75
}

相反。你知道吗


或者:

import operator  

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

0.75

可能评估是最简单的

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

如果要在程序中使用^{},请使用正确的数据类型:

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

^{}适用于您的conf.var

相关问题 更多 >