Разбор файла YAML в Python и доступ к данным? - PullRequest
71 голосов
/ 15 ноября 2011

Я новичок в YAML и искал способы синтаксического анализа файла YAML и использования / доступа к данным из проанализированного YAML.

Я встречал объяснения о том, как анализировать файл YAML, например, учебник по PyYAML , " Как мне проанализировать файл YAML в Python ", " Преобразовать Python dict в объект?", но я не нашел простой пример того, как получить доступ к данным из проанализированного файла YAML.

Предположим, у меня есть файл YAML, такой как:

 treeroot:
     branch1: branch1 text
     branch2: branch2 text

Как мне получить доступ к тексту "branch1 text"?

" Разбор YAML и Python? " предоставляет решение, но у меня были проблемы с доступом к данным из более сложного файла YAML. И мне интересно, есть ли какой-нибудь стандартный способ доступа к данным из разобранного файла YAML, возможно, что-то похожее на нотацию " tree " или " elementpath " или что-то, что будет использоваться при разборе файла XML?

1 Ответ

136 голосов
/ 15 ноября 2011

Поскольку функция PyYAML yaml.load() анализирует документы YAML в собственных структурах данных Python, вы можете просто получить доступ к элементам по ключу или индексу.Используя пример из вопроса, который вы связали:

import yaml
with open('tree.yaml', 'r') as f:
    doc = yaml.load(f)

Для доступа к branch1 text вы должны использовать:

txt = doc["treeroot"]["branch1"]
print txt
"branch1 text"

, потому что в вашем документе YAML значение branch1клавиша находится под клавишей treeroot.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...