这里发布此而不是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"
之后添加空格可以解决问题。
答案 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")