python - Yaml 转储 python 字典作为不带单引号的映射

标签 python yaml pyyaml ruamel.yaml

我想将 dict 转储到 yaml 文件中,不带引号。基本上就像一个映射

import yaml

windows_list = []
server_list = ['abc-def-01', 'pqr-str-02']
site_list = ['dev', 'prod']

server_dict = dict(zip(server_list, site_list))

for k,v in server_dict.items():
    a = '{ SERVER: '+k+', SITE: '+v+' }'
    windows_list.append(a)

final_dict = {'service':'something','servers': windows_list}

with open('config.yml', 'w') as yaml_file:
    yaml.dump(final_dict, yaml_file, default_flow_style=False)

config.yml 的输出如下:

service: some name
servers:
- '{ SERVER: abc-def-01, SITE: dev }'
- '{ SERVER: pqr-str-02, SITE: prod }'

我不想要它周围的引号。我希望它是一个不带引号的映射

期望的输出

service: some name
servers:
- { SERVER: abc-def-01, SITE: dev }
- { SERVER: pqr-str-02, SITE: prod }

我读到this post它说如果你有特殊字符就不可能删除引号,但我想知道是否有某种解决方法来实现我想要的。

最佳答案

试试这个:

for k,v in server_dict.items():
    a = { 'SERVER': f'{k}', 'SITE': f'{v}' }
    windows_list.append(a)

final_dict = {'service':'something','servers': windows_list}

with open('config.yml', 'w') as yaml_file:
    yaml.dump(final_dict, yaml_file, default_flow_style=False)

它将以 yaml 格式/结构准确生成您需要的内容:

servers:
- SERVER: abc-def-01
  SITE: dev
- SERVER: pqr-str-02
  SITE: prod
service: something

HTH

关于python - Yaml 转储 python 字典作为不带单引号的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63111519/

相关文章:

python - Django 中的三元模型关联

arrays - 是否有用于共享列表或 map 的一部分的 YAML 语法?

python - PyYAML,如何对齐 map 条目?

python - PyYAML 与 Python 3.x

python - 结果窗口打开,但未显示在登录页面程序的标签和文本框中

Python - Pandas - 展开/删除累计和

python - Pandas 通过根据另一列的值添加列级别来 reshape 数据框

Python包: Can I look for config/yml file from project directory which called it?

c++ - OpenCV FileStorage - 元素之间的错误 : Parsing error (icvYMLParseValue) Missing ,

python - 如何使用 pyYAML 将 python 元组添加到 YAML 文件?