Ах, спасибо. У меня также были планы изучить метод перегрузки YAML, просто для удовольствия :)

у разобрать документы yaml как следующие

meta-info-1: val1
meta-info-2: val2

---

Plain text/markdown content!
jhaha

Если яload_all это с PyYAML, я получаю следующее

>>> list(yaml.load_all(open('index.yml')))
[{'meta-info-1': 'val1', 'meta-info-2': 'val2'}, 'Plain text/markdown content! jhaha']

Здесь я пытаюсь добиться того, чтобы файл yaml содержал два документа, а второй должен интерпретироваться как однострочный документ, точнее любой большой текст с форматированием уценки. Я не хочу, чтобы он анализировался как синтаксис YAML.

В приведенном выше примере PyYAML возвращает второй документ в виде одной строки. Но если второй документ имеет: персонаж вместо! например, я получаю синтаксическую ошибку. Это потому, что PyYAML анализирует материал в этом документе.

Есть ли способ, которым я могу сказать PyYAML, что второй документ является просто необработанной строкой, а не анализировать ее?

редактироватьНесколько отличных ответов. Хотя использование кавычек или буквального синтаксиса решает указанную проблему, я бы хотел, чтобы пользователи могли писать простой текст без лишних усилий. Только три-х (или.s) и запишите большое количество простого текста. Который также может включать в себя кавычки тоже. Итак, я хотел бы знать, могу ли я сказать PyYAML, чтобы он анализировал только один документ и дал мне второй в сыром виде.

Эйдт 2Таким образом, адаптация идеи agf вместо использования try / кроме как в качестве второго документа может быть допустимым синтаксисом yaml,

config_content, body_content = open(filename).read().split('\n---')
config = yaml.loads(config_content)
body = yaml.loads(body_content)

Спасибо агф.

Ответы на вопрос(2)

Ваш ответ на вопрос