Проблема с записью списка в файл YML
import yaml
output = [
'{"football": "basketball"}',
'{"basketball": "basketball" }'
]
dict_file = [
{'sports' : output},
{'countries' : [
'Pakistan',
'USA',
'India',
'China',
'Germany',
'France',
'Spain']
}
]
with open(r'E:\data\store_file.yaml', 'w') as file:
documents = yaml.dump(dict_file, file)
Выход:
- sports:
- '{"football": "basketball"}'
- '{"basketball": "basketball" }'
Желаемый результат:
- sports:
- {"football": "basketball"}
- {"basketball": "basketball" }
Пожалуйста, помогите мне.
3 ответа
в конце концов, это может сработать для вас
import yaml
import json
output = ['{"football": "basketball"}', '{"basketball": "basketball" }']
dict_file = [{'sports' : [json.loads(_) for _ in output]},
{'countries' : ['Pakistan', 'USA', 'India', 'China', 'Germany', 'France', 'Spain']}]
with open(r'E:\data\store_file.yaml', 'w') as file:
documents = yaml.dump(dict_file, file)
файл:
- sports:
- football: basketball
- basketball: basketball
- countries:
- Pakistan
- USA
- India
- China
- Germany
- France
- Spain
К вашему сведению,
dict
структура не придет с
{}
скобки в
.yml
. Это будет без скобок и при чтении вы можете читать как ключи и значения (
Dict
) тип.
Примечание . Обновлен ответ и спасибо за предложение.
@accdias
Вы храните строки в
output
Удалите одинарные кавычки, чтобы сделать их словарями:
output = [{"football": "basketball"}, {"basketball": "basketball" }]
Файл YAML точно представляет данные, которые вы указали в своем вопросе. Переменная
output
это список строк, а не список словарей. Для желаемого результата вам нужно будет исправить свой код:
output = [{"football": "basketball"}, {"basketball": "basketball" }]
Обратите внимание, что это даст вам:
- sports:
- football: basketball
- basketball: basketball
Который синтаксически идентичен:
- sports:
- {"football": "basketball"}
- {"basketball": "basketball" }