0
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" }

请帮帮我。

4

3 回答 3

0

最终,这对你有用

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)

.yml文件:


    - sports:
      - football: basketball
      - basketball: basketball
    - countries:
      - Pakistan
      - USA
      - India
      - China
      - Germany
      - France
      - Spain

供您参考,该dict结构不会{}.yml. 它将不带括号,阅读时您可以阅读为键和值(Dict)类型。

注意:更新了答案并感谢您的建议@accdias

于 2022-01-12T14:03:59.667 回答
0

YAML 文件准确地代表了您在问题中显示的数据。该变量output是字符串列表,而不是字典列表。对于所需的输出,您需要修复您的代码:

output = [{"football": "basketball"}, {"basketball": "basketball" }]

请注意,这将为您提供:

- sports:
  - football: basketball
  - basketball: basketball

这在语法上等同于:

- sports:
  - {"football": "basketball"}
  - {"basketball": "basketball" }
于 2022-01-12T13:57:55.330 回答
0

您正在将字符串存储在output

删除单引号使它们成为字典:

output = [{"football": "basketball"}, {"basketball": "basketball" }]
于 2022-01-12T13:58:38.037 回答