【发布时间】:2015-08-08 03:39:51
【问题描述】:
当我使用 YAML 从 JSON 转储中加载一个数字时,该数字被加载为字符串而不是浮点数。
我认为这个简单的例子可以解释我的问题。
import json
import yaml
In [1]: import json
In [2]: import yaml
In [3]: All = {'one':1,'low':0.000001}
In [4]: jAll = json.dumps(All)
In [5]: yAll = yaml.safe_load(jAll)
In [6]: yAll
Out[6]: {'low': '1e-06', 'one': 1}
YAML 将 1e-06 加载为字符串而不是数字?我该如何解决?
【问题讨论】:
-
@SiHa 这可能是避免这个问题的一种方法,但真正的问题是当你离开
json.dumps()时,YAML 应该是 JSON 和 '1e-06` 的超集是一个正确的 JSON 编号,AFAICT 也是一个正确的 YAML 编号。 PyYAML 只是没有正确解析它。 -
@Oren,我进一步更新了我的答案,因为我提出的原始模式在匹配没有点或指数部分的数字时可能存在问题。 ruamel.yaml 可以正确解析这些 JSON 数字,无需任何额外的修补。
-
@Oren 只需将您的 yaml 文件从
1e-3编辑为1.0e-3 -
嗨@Koo json 是从管道自动创建的..
标签: python json dictionary pyyaml