如何使用Python从YAML中的特定键中删除值?

2024-04-27 00:17:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用Python成功地解决了在YAML中向键添加值的问题,并开始了与添加代码相反的工作。以下是我对代码工作方式的建议:

connected_guilds:
- 1
- 2

运行代码后,YAML文件应更改为:

connected_guilds:
- 1

这是我的代码,但是它不起作用,它最终完全消失了,剩下的是我随附的第一个YAML示例中的-1

with open('guilds.yaml', 'r+') as guild_remove:
    loader = yaml.safe_load(guild_remove)

    content = loader['connected_guilds']

    for server in content:
        if server != guild_id:
            continue
        else:
            content.remove(guild_id)

            guild_remove.seek(0)

            yaml.dump(content, guild_remove)

            guild_remove.truncate()

如果有人能帮助我,我将不胜感激


Tags: 文件代码idyamlserver方式loadercontent
0条回答
网友
1楼 · 发布于 2024-04-27 00:17:28

当Python已经向您提供以下内容时,不要尝试重新实现搜索要删除的项:

with open('guilds.yaml', 'r+') as guild_remove:
    content = yaml.safe_load(guild_remove)
    content["connected_guilds"].remove(guild_id)
    guild_remove.seek(0)
    yaml.dump(content, guild_remove)
    guild_remove.truncate()
网友
2楼 · 发布于 2024-04-27 00:17:28

以下是解决方案(参考添加代码):

with open('guilds.yaml', 'r+') as guild_remove:
    loader = yaml.safe_load(guild_remove)

    content = loader['connected_guilds']

    for server in content:
        if server != guild_id:
            continue
        else:
            content.remove(guild_id)

            guild_remove.seek(0)

            yaml.dump({'connected_guilds': content}, guild_remove)

            guild_remove.truncate()

相关问题 更多 >