You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pyyaml导出YAML文件时移除!!int标记?

解决PyYAML导出YAML时数值字段带!!int标记的问题

问题核心:导出的YAML中出现!!int标记,是因为cores、disks等字段的类型为整数,而你使用default_style='"'强制所有值添加引号时,PyYAML会为非字符串类型附加类型标签以保留类型信息。

直接解决方案:将数值字段转换为字符串类型

在构建Server命名元组时,把原本是整数类型的字段显式转换为字符串,这样PyYAML导出时就会直接输出带引号的字符串,不会附加类型标记。

修改后的代码如下:

from collections import namedtuple
import yaml
# 假设sheet是已读取的Excel工作表对象

Server = namedtuple("Server", "name ip mask gw vlan template cores sockets memory disks")
servers = []
for val in sheet.iter_rows(min_row=2, min_col=2, values_only=True):
    # 将cores、sockets、memory、disks字段转换为字符串
    server = Server(
        val[1], val[2], val[3], val[4], val[5], val[6],
        str(val[7]), str(val[8]), str(val[9]), str(val[10])
    )
    servers.append(server._asdict())

vms_spec = {'vms': servers}

with open('test.yml','w') as yamlW:
    yaml.safe_dump(vms_spec, yamlW, indent=2, default_style='"')

原理说明

当字段类型为字符串时,default_style='"'会直接给字符串添加双引号,PyYAML不需要额外的类型标记来区分类型,因此最终导出的YAML会呈现为你期望的"cores": "4"格式。

内容的提问来源于stack exchange,提问作者Yousef Almutairi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:04:59