У меня есть данные yaml, такие как входные данные ниже, и мне нужно вывести в виде пар ключ-значение
Ввод
a="""
--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
code:
- '716'
- '718'
id:
- 488
- 499
"""
Требуется вывод
{'code': ['716', '718'], 'id': [488, 499]}
Конструктор по умолчанию былдавая мне ошибку.Я попытался добавить новый конструктор, и теперь он не дает мне ошибку, но я не могу получить пары ключ-значение.К вашему сведению, если я уберу строку !ruby/hash:ActiveSupport::HashWithIndifferentAccess
из моего yaml, то это даст мне желаемый результат.
def new_constructor(loader, tag_suffix, node):
if type(node.value)=='list':
val=''.join(node.value)
else:
val=node.value
val=node.value
ret_val="""
{0}
""".format(val)
return ret_val
yaml.add_multi_constructor('', new_constructor)
yaml.load(a)
output
"\n [(ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'code'), SequenceNode(tag=u'tag:yaml.org,2002:seq', value=[ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'716'), ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'718')])), (ScalarNode(tag=u'tag:yaml.org,2002:str', value=u'id'), SequenceNode(tag=u'tag:yaml.org,2002:seq', value=[ScalarNode(tag=u'tag:yaml.org,2002:int', value=u'488'), ScalarNode(tag=u'tag:yaml.org,2002:int', value=u'499')]))]\n "
Пожалуйста, предложите.