ruamel.yaml 的最新版本无法解析简单流映射
Latest version of ruamel.yaml fails to parse simple flow mapping
在这里发布这个而不是 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"
之后添加空格可以解决问题。
这是 ruamel.yaml<0.15.30 中的错误。
令牌扫描器在早期的几个微版本中进行了更改,以允许 ::
和 ?
出现在普通标量中(根据 1.2 规范的要求,请参见示例 7.10),这些更改影响了这个,"compact JSON",语法。
一种解决方法,如果您无法升级 ruamel.yaml
,这可能比更改所有 YAML 输入更容易,将其显式加载为 YAML 1.1:
from ruamel import yaml
test_str = '{"in":{},"out":{}}'
yaml.safe_load(test_str, version="1.1")
在这里发布这个而不是 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"
之后添加空格可以解决问题。
这是 ruamel.yaml<0.15.30 中的错误。
令牌扫描器在早期的几个微版本中进行了更改,以允许 ::
和 ?
出现在普通标量中(根据 1.2 规范的要求,请参见示例 7.10),这些更改影响了这个,"compact JSON",语法。
一种解决方法,如果您无法升级 ruamel.yaml
,这可能比更改所有 YAML 输入更容易,将其显式加载为 YAML 1.1:
from ruamel import yaml
test_str = '{"in":{},"out":{}}'
yaml.safe_load(test_str, version="1.1")