类似于JSON 是否有查询语言?以及更具体的如何过滤具有属性值的 YAML 数据集?- 我想:
- 手动编辑 YAML 文件中的少量数据
- 对完整数据集执行任意查询(可能在 Python 中,对其他想法开放)
- 在 Python 中使用生成的子集
PyYAML似乎没有这样的功能,今天我找不到 YQuery 语言的链接,反正这不是一个成熟的项目(或者也许是我梦寐以求的)。
是否有提供 YAML 查询的(Python)库?如果没有,是否有一种 Pythonic 方式来“查询”一组对象,而不仅仅是迭代它们?
类似于JSON 是否有查询语言?以及更具体的如何过滤具有属性值的 YAML 数据集?- 我想:
PyYAML似乎没有这样的功能,今天我找不到 YQuery 语言的链接,反正这不是一个成熟的项目(或者也许是我梦寐以求的)。
是否有提供 YAML 查询的(Python)库?如果没有,是否有一种 Pythonic 方式来“查询”一组对象,而不仅仅是迭代它们?
我不认为有直接的方法可以做到这一点。但是 PyYAML 将 yaml 文件读入一个代表文件中所有内容的字典。之后,您可以执行所有与 dict 相关的操作。基于值的字典中的python查询键问题提到了一些pythonic“查询”样式。
bootalchemy提供了一种通过 SQLAlchemy 执行此操作的方法。首先,在 SQLAlchemy 模型中定义您的模式。然后使用 bootalchemy 将 YAML 加载到 SQLAlchemy 会话中。最后,对该会话执行查询。(您不必将会话提交到实际数据库。)
PyPI 页面中的示例(假设model已定义):
from bootalchemy.loader import Loader
# (this simulates loading the data from YAML)
data = [{'Genre':[{'name': "action",
'description':'Car chases, guns and violence.'
}
]
}
]
# load YAML data into session using pre-defined model
loader = Loader(model)
loader.from_list(session, data)
# query SQLAlchemy session
genres = session.query(Genre).all()
# print results
print [(genre.name, genre.description) for genre in genres]
输出:
[('action', 'Car chases, guns and violence.')]
您可以尝试使用 jsonpath 吗?是的,这意味着 json,而不是 yaml,但只要你有 json 兼容的数据结构,这应该可以工作,因为你正在处理解析的数据,而不是 json 或 yaml 表示?(似乎适用于 python 库jsonpath和jsonpath-rw)
您可以检查以下工具: