Мне удалось заставить простые, простые примеры анализа YAML работать нормально, но у меня возникли проблемы с вложенной структурой реального файла YAML, которую я должен проанализировать. У меня проблемы с просмотром коллекций. Я использую python3.6, ниже приведен фрагмент рудиментарного кода.
import yaml
with open('action.yml', 'r') as action:
doc = yaml.load(action)
action = doc["actions"]["a1"]["action"]
print (action)
tval = doc["actions"]["a1"]["add"]["filters[1]"]["value"]
print (tval)
print ('done')
Ошибка времени выполнения выглядит следующим образом:
Traceback (most recent call last):
File "actionparser.py", line 27, in <module>
tval = doc["actions"]["a1"]["add"]["filters[1]"]["value"]
KeyError: 'filters[1]'
Реальный входной файл YAML выглядит следующим образом. Как получить действия: a1: добавить: фильтры [1]: значение и действия: a2: добавить: фильтры [1]: значение
---
actions:
a1:
action: alias
add:
filters:
-
filtertype: pattern
kind: prefix
value: logstash-
-
filtertype: pattern
kind: regex
value: ^logstash-dev-firehbridge-cold <== How do I get this?
-
filtertype: pattern
kind: timestring
unit_count: 2
description: "Add/Remove alias1"
options:
disable_action: false
ignore_empty_list: true
name: current_firebridge
warn_if_no_indices: true
remove:
filters:
-
filtertype: pattern
kind: prefix
value: logstash-
-
filtertype: pattern
kind: regex
value: ^logstash-dev-firehbridge-cold
-
filtertype: pattern
kind: timestring
unit_count: 2
value: "%Y.%m.%d"
a2:
action: alias
add:
filters:
-
filtertype: pattern
kind: prefix
value: logstash-
-
filtertype: pattern
kind: regex
value: ^logstash-dev-firehbridge-hot <== and how do I get this?
-
filtertype: pattern
kind: timestring
unit_count: 2
description: "Add/Remove alias2"
options:
disable_action: false
ignore_empty_list: true
name: current_firebridge
warn_if_no_indices: true
remove:
filters:
-
filtertype: pattern
kind: prefix
value: logstash-
-
filtertype: pattern
kind: regex
value: ^logstash-dev-firehbridge-hot
-
filtertype: pattern
kind: timestring
unit_count: 2
value: "%Y.%m.%d"