选择器,如jQuery选择器,CSS选择器和XPATH都很酷。
问题是否有人为Python对象编写了类似的内容,表示为嵌套原语(列表,字符串,元组等)?
(注意:如果这些对象需要非循环,我认为对大多数情况来说,这并不是极端限制。)
简单示例如果我们有数据,
x = [
{'xyz': 3},
{'xyz': 4}
]
然后,如果有人可以写sel("[].xyz", x)
之类的东西并且回来(可能是对[3, 4]
的引用,那就太好了。
第二个简单示例如果我们有数据,
x = [{'a': {'b': [1, 2]}}]
然后,也许我们可以编写类似sel("[].a.b[]", x)
的内容并获取[1, 2]
。
答案 0 :(得分:2)
存在“jQuery选择器,CSS选择器和XPATH”的原因是因为它很难查询DOM,CSS和XML。
然而,Python通常非常出色地提供了清晰简洁地重新组织/查询数据结构的方法。您的示例sel("[].xyz", x)
将以惯用语写出:
[d['xyz'] for d in x]
只有五个字符,可以说更清晰。您的第二个示例sel("[].a.b[]", x)
将以惯用语编写
list(itertools.chain(*[d['a']['b'] for d in x]))
虽然更详细,但不那么模糊(我们怎么知道列表需要在你的例子中展平)。
我认为,像语言这样的查询所期望的功能完全存在于以下功能集中:
itertools
模块