#python #glom
Вопрос:
У меня есть следующие варианты входных данных:
show_version_ios_parsed = { "version": { "uptime": "7 weeks, 6 days, 3 hours, 37 minutes", } }
и
show_version_nxos_parsed = { "platform": { "kernel_uptime": {"days": 102, "hours": 1, "minutes": 2, "seconds": 13}, } }
Мне нужно извлечь uptime
(или kernel_uptime
) ключевое значение в виде строки, чтобы оба результата выглядели так:
{'uptime': '7 weeks, 6 days, 3 hours, 37 minutes'}
и
{'uptime': '102 days, 1 hours, 2 minutes, 13 seconds}
Я придумал следующую спецификацию glom:
spec = ( T.items(), Iter( { "uptime": Coalesce(T[1]["uptime"], T[1]["kernel_uptime"]), }, ), Merge(), )
После применения его к входным данным я получаю это:
gt;gt;gt; glom(show_version_ios_parsed, spec) {'uptime': '7 weeks, 6 days, 3 hours, 37 minutes'} gt;gt;gt; glom(show_version_nxos_parsed, spec) {'uptime': {'days': 102, 'hours': 1, 'minutes': 2, 'seconds': 13}}
Как вы можете видеть, он извлекает только uptime
ключевое значение, как оно есть.
Есть ли способ преобразовать второе значение времени безотказной работы в строку с glom?