最新版本的ruamel.yaml无法解析简单的流映射

时间:2017-08-14 19:22:46

标签: yaml ruamel.yaml

这里发布此而不是Bitbucket,因为我真的不确定这是否是用户错误。升级到最新版本之后,像这样简单的东西就破了:

>>> from ruamel import yaml
>>> test_str = '{"in":{},"out":{}}'
>>> yaml.safe_load(test_str)

ruamel.yaml.parser.ParserError: while parsing a flow mapping
  in "<byte string>", line 1, column 1:
    {"in":{},"out":{}}
    ^ (line: 1)
expected ',' or '}', but got '<scalar>'
  in "<byte string>", line 1, column 6:
    {"in":{},"out":{}}
         ^ (line: 1)

"in""out"之后添加空格可以解决问题。

1 个答案:

答案 0 :(得分:1)

这是ruamel.yaml <0.15.30中的错误。

令牌扫描程序之前已经更改了几个微型版本,以便允许::?出现在普通标量中(根据1.2规范的要求,参见示例7.10),以及更改影响了这个,“紧凑的JSON”,语法。

一种解决方法是,如果无法升级ruamel.yaml,这可能比更改所有YAML输入更容易,则将其显式加载为YAML 1.1:

from ruamel import yaml
test_str = '{"in":{},"out":{}}'
yaml.safe_load(test_str, version="1.1")