与Is there a query language for JSON?类似,更具体How can I filter a YAML dataset with an attribute value? - 我想:
PyYAML似乎没有这样的功能,今天我找不到YQuery语言的链接,这不是一个成熟的项目(或许我梦见它) )。
是否有提供YAML查询的(Python)库?如果没有,是否有一种Pythonic方法来“查询”一组对象,而不仅仅是迭代它们?
答案 0 :(得分:1)
我没有直接的方法来做到这一点。但PyYAML将yaml文件读入代表文件中所有内容的字典。之后您可以执行所有与dict相关的操作。问题python query keys in a dictionary based on values提到了一些pythonic“查询”样式。
答案 1 :(得分:1)
bootalchemy提供了一种通过SQLAlchemy执行此操作的方法。首先,在SQLAlchemy模型中定义模式。然后使用bootalchemy将您的YAML加载到SQLAlchemy会话中。最后,在该会话上执行查询。 (您不必将会话提交到实际数据库。)
来自PyPI页面的 Example(假设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.')]
答案 2 :(得分:0)
您可以尝试使用jsonpath吗?是的,这意味着json,而不是yaml,但只要你有json兼容的数据结构,这应该工作,因为你正在处理解析的数据,而不是json或yaml代表? (似乎适用于python库jsonpath
和jsonpath-rw
)