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

问题描述:

在此处发布而不是Bitbucket,因为我真的不确定这是否是用户错误。一些简单的像这样升级到最新版本后,朗声道:"in""out"解决问题ruamel.yaml的最新版本无法解析简单的流映射

>>> 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) 

插入空格之后。

+1

感谢您的报告,这确实是一个错误。 – Anthon

这是一个在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")