Ах, спасибо. У меня также были планы изучить метод перегрузки 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)
Спасибо агф.