使用
stream = open(afile, 'r')
self.meta = yaml.load(stream)
你可以在python中轻松阅读YAML文件,但最后我没有---
达到错误(与...
相同):
yaml.composer.ComposerError: expected a single document in the stream
in "El-punt-de-llibre.md", line 2, column 1
but found another document
in "El-punt-de-llibre.md", line 6, column 1
但YAML规定allow:
YAML使用三个破折号(“---”)将指令与文档内容分开。如果没有指令,这也用于表示文档的开始。三个点(“......”)表示文档的结尾而不开始新的文档,用于通信通道。
那么,你怎么看这个
---
title: "El punt de llibre"
abstract: "Estimar a quina pàgina està el punt de llibre"
keywords: ["when", "activitat", "3/3", "grup", "estimació", "aproximació", "funció lineal - proporcionalitat", "ca"]
comments: true
...
在python中?
答案 0 :(得分:3)
您的YAML流/文件似乎包含多个文档,例如,尝试解析此文件会产生相同的错误消息:
---
title: "El punt de llibre"
abstract: "Estimar a quina pàgina està el punt de llibre"
keywords: ["when", "activitat", "3/3", "grup", "estimació", "aproximació", "funció lineal - proporcionalitat", "ca"]
comments: true
...
---
title: "El punt de llibre"
abstract: "Estimar a quina pàgina està el punt de llibre"
keywords: ["when", "activitat", "3/3", "grup", "estimació", "aproximació", "funció lineal - proporcionalitat", "ca"]
comments: true
...
---
title: "El punt de llibre"
abstract: "Estimar a quina pàgina està el punt de llibre"
keywords: ["when", "activitat", "3/3", "grup", "estimació", "aproximació", "funció lineal - proporcionalitat", "ca"]
comments: true
...
要处理此类流,您可以使用以下方法:
import yaml
with open('test.yaml') as f_yaml:
for doc in yaml.safe_load_all(f_yaml):
print doc
这将显示以下内容:
{'keywords': ['when', 'activitat', '3/3', 'grup', u'estimaci\xf3', u'aproximaci\xf3', u'funci\xf3 lineal - proporcionalitat', 'ca'], 'abstract': u'Estimar a quina p\xe0gina est\xe0 el punt de llibre', 'comments': True, 'title': 'El punt de llibre'}
{'keywords': ['when', 'activitat', '3/3', 'grup', u'estimaci\xf3', u'aproximaci\xf3', u'funci\xf3 lineal - proporcionalitat', 'ca'], 'abstract': u'Estimar a quina p\xe0gina est\xe0 el punt de llibre', 'comments': True, 'title': 'El punt de llibre'}
{'keywords': ['when', 'activitat', '3/3', 'grup', u'estimaci\xf3', u'aproximaci\xf3', u'funci\xf3 lineal - proporcionalitat', 'ca'], 'abstract': u'Estimar a quina p\xe0gina est\xe0 el punt de llibre', 'comments': True, 'title': 'El punt de llibre'}
答案 1 :(得分:1)
如果您的YAML源包含多个文档,则可以使用
获取第一个文档list(yaml.safe_load_all(stream))[0]
但是,...
导致PyYaml中断并且您可能想要将其报告为错误,这似乎很奇怪。