使用PyYaml加载YAML失败?

2 投票
3 回答
9694 浏览
提问于 2025-04-17 12:38

有没有人遇到过这样的错误?

File "C:\Python27\lib\site-packages\yaml\parser.py", line 439, in parse_block_mapping_key
"expected <block end>, but found %r" % token.id, token.start_mark)

ParserError: while parsing a block mapping
  in "a.yml", line 1, column 1
expected <block end>, but found '<block mapping start>'
  in "a.yml", line 224, column 2 

我是在用PyYaml加载一个YAML文件的时候发现这个错误的。我在网上搜索了一下,但没找到相关的信息。

3 个回答

0

我也遇到过同样的错误,但对我来说,问题出在缩进上!

1

错误提示中的行号有时候会让人误解。你应该查看整个部分(缩进),通常这个部分是从报告的行号开始的。

在我的例子中,问题是因为文件里的一个拼写错误。我写的是:

key5: sub1: 234 sub2: 9879 sub3: "引号里的字符串"asdf sub4: "另一个引号里的字符串"

解析器显然不喜欢asdf这个部分,因为它不在引号里面,导致sub3的值出错。不过,错误提示中的行号和列号却指向了缩进中的第一个条目(sub1),而不是实际出错的sub3。

4

问题是,我没有得到一个有效的YAML文件。起初,我以为我的代码有问题,但在我检查了在线YAML解析器后,它返回的结果和我一样。假设那个网站是对的,那么这个YAML文件就是无效的。

撰写回答