如何使用Python3将ruamel.yaml转换为dict?

2024-05-06

我想要一个dict (or OrderedDict) from ruamel.yaml。 我正在使用 Python 3.8,如果有帮助的话,很乐意切换到 3.9。

from ruamel.yaml import YAML
from collections import OrderedDict

with open(self.filename) as f:
    data = yaml.load(f)
    print(type(data))  # <class 'ruamel.yaml.comments.CommentedMapItemsView'>

    data = dict(yaml.load(f))
    print(type(data))  # <class 'dict_items'>

    data = yaml.load(f).items()  # AttributeError: 'NoneType' object has no attribute 'items'

我用这个例子尝试过,

from ruamel.yaml import YAML

with open("test.yaml") as f:
    yaml = YAML()
    data = yaml.load(f)
    print(type(data))
    print("all: ", data)
    print(dict(data)) 
    print(dict(data)['data']) 

测试.yaml

---
data: name
test1:
  - name: name1

Output

<class 'ruamel.yaml.comments.CommentedMap'>
all:  ordereddict([('data', 'name'), ('test1', [ordereddict([('name', 'name1')])])])
{'data': 'name', 'test1': [ordereddict([('name', 'name1')])]}
name 

您需要在使用之前将 YAML 加载到变量中,因此您需要使用data代替yaml.load(f)。 它显示错误print(dict(yaml.load(f)))

如果您不必往返,也可以使用安全加载程序:

from pathlib import Path
from ruamel.yaml import YAML

yaml = YAML(typ='safe', pure=True)
data = yaml.load(Path('test.yaml'))
print(type(data))

这会将所有映射加载为dicts 和序列为lists 而不是更复杂的往返类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Python3将ruamel.yaml转换为dict? 的相关文章

随机推荐

  • 如何更改 Kindle Fire 上 /mnt/SDcard 文件夹的读/写权限?

    我正在尝试在 Android 中开发 Amazon In app 为此 我从该网站下载示例代码https developer amazon com sdk in app purchasing sample code button click
  • PHP如何使用“ XML 中的实体与 DOMdocument

    我正在修改由其他库生成的 XML 文件的内容 我正在使用 PHP 5 3 10 进行一些 DOM 修改并重新插入替换节点 我正在使用的 XML 数据有 quot 在进行操作之前的元素 我想保留这些元素http www w3 org TR R
  • Unix cURL POST 使用文件中的内容到特定变量

    我已经搜索过这个答案 但没有找到任何有效或完全符合我的问题的答案 使用 Unix cURL 我需要将键 值对发布到服务器 密钥将是 MACs 换行符分隔的 MAC 地址文件的内容将是此 POST 的 VALUE 我试过了 curl d fi
  • 重写 .php 扩展名

    请问我该如何重写 有人可以重写这个网址吗 to http localhost display news cat 14 2 http localhost display news cat 14 2 谢谢 您可以使用 htaccess 文件来做
  • GitHub Actions 中的嵌套模板(从另一个 yaml 文件调用一个 yaml 文件)

    GitHub Action 是否支持嵌套模板 例如 以下是 Azure Pipeline yaml 的示例 其中调用另一个 yaml 文件 job BuildFunctions steps each func in parameters f
  • 在 Project Rider 中启用 c# 7 编译

    如果我将 LangVersion 设置为 7 则会出现以下错误 Error CS1617 Invalid option 7 for langversion must be ISO 1 ISO 2 Default or an integer
  • 近调用/跳转表并不总是在引导加载程序中工作

    一般问题 我一直在开发一个简单的引导加载程序 并在某些环境中偶然发现了一个问题 在这些环境中 此类指令不起作用 mov si call tbl SI Call table pointer call call tbl Call print c
  • 如何使用 Google Direction api 或 iPhone 应用程序的其他一些 api 比较两条路线

    我想比较两条路线以检查它们在我的 iPhone 应用程序中是否相同 有一个人X想要从A点到B点 另一个人想要从A1点到B1点 我可以使用谷歌的方向 API 获取 A 到 B 之间的路线 http maps googleapis com ma
  • 合并空间上接近的路径/线段的算法

    我正在寻找一种用于街道地图制图概括的几何算法 名称 在我的地图数据中 我有许多路径 点的有序列表 由线段连接 这些路径彼此靠近且几乎平行 我如何 1 识别这些 相邻路径 即如何找到比某个阈值更接近的路径 以及 2 将它们合并成一条路径 即如
  • 如何访问 Rails 4 模型中的 polymorphic_path?

    很简单 我想用polymorphic pathRails 4 模型中的方法 是的 我知道关注点分离很差 我知道Rails application routes url helpers but polymorphic path不在那里 尝试也
  • 在gradle c++项目中配置C++标准?

    我有一个由以下构建脚本定义的 gradle 项目 build gradle plugins id cpp application application targetMachines add machines linux x86 64 ta
  • 如何手动加载并执行 ELF 二进制可执行文件?

    假设二进制文件是PIC 如何将其加载到内存并执行入口点 我这样做是为了熟悉 ELF 所以execve不允许 这些是基本步骤 阅读程序头以查找 LOAD 指令并确定您需要的映射的总长度 以页为单位 将最低地址的 LOAD 指令映射到总长度 可
  • FXML 文档拒绝导入其他 fxml 文件

    我的程序有一个主要的 FXML 文档 其中包含TabPane 对于每个选项卡 我希望它有自己的控制器和 fxml 文件 当我尝试将外部 fmxl 文件包含到主 fxml 文档中时 我的程序拒绝运行 这是我的主要 FXML 文档 这是我的 j
  • 如何使用 jenkins shell 创建新的 git 分支

    我想达到以下目标 在某些詹金斯工作中 从 dev branch 创建一个新分支 对新创建的分支 new branch 进行一些更改 将新创建的分支推送到 git repo 我在詹金斯中执行了以下步骤 我已经在 源代码管理 部分配置了我的 g
  • JSF h:列标记固定宽度

    有人可以告诉我如何使用 JSF 修复数据表中列的宽度吗 我的代码当前如下
  • 在 Go 中使用 init() 函数真的很糟糕吗?

    几天前我开始了一个新的 go 项目 我使用 golangci lint 使我的代码具有良好的风格 我发现 gochecknoinits 是 golangci lint 的 linter 之一 它告诉我不要使用 init 在我看来 为了方便起
  • pandas 用 nan 值切割了一系列

    我想将 pandas cut 函数应用于包含 NaN 的序列 期望的行为是它对非 NaN 元素进行存储并为 NaN 元素返回 NaN import pandas as pd numbers with nan pd Series 3 1 2
  • Excel函数:引用单元格中的数组

    我在单元格 A1 中有一个数组 通过 A1 G6 J6 aa b ccc 1 现在我想将单元格 A1 用于 B1 中的数组公式 基本上B1应该是 B1 SUMPRODUKT C6 C12 B6 B12 G6 J6 但我不想直接引用 G6 J
  • 在 c:\ProgramFiles\ 下时忽略 .Net app.config 文件

    我有一个奇怪的现象 我有 Net 4 0 应用程序 当 myapp exe config 位于普通的 programfiles 文件夹下时 它将被忽略 即使我删除它或在其中写入废话 myapp exe 仍然可以工作 并且在我看来 这些值是从
  • 如何使用Python3将ruamel.yaml转换为dict?

    我想要一个dict or OrderedDict from ruamel yaml 我正在使用 Python 3 8 如果有帮助的话 很乐意切换到 3 9 from ruamel yaml import YAML from collecti