创建任意数据结构的库
项目描述
ent是从类似字典的数据源生成基于属性的数据结构的基本框架
> from ent import Ent > obj = Ent(foo='foo', bar=None) > obj.foo u'foo' > obj.bar None
ent可以包含任意嵌套的层次结构,只要每个节点/叶子是原始类型或ent
> obj = Ent({ 'foo': 'bar', 'list': [1, 2, 3, 4], 'inner': { 'foo': 'baz', 'bar': 'bang', }, 'ent': Ent(foo='bar'), }) > obj.foo u'bar' > obj.list[2] 3 > obj.inner.foo u'baz'
ent可以合并和diff,并且在合并共享键时会强制类型
> ent1 = Ent(foo=1, bar=True) > ent2 = Ent(foo='hi', bar=False, goo='win') > Ent.merge(ent1, ent2) <Ent {'foo': 1, 'bar': False}> > Ent.diff(ent1, ent2) <Ent {'bar': False}>
ent甚至提供了一个用于将Ent对象和原始JSON/YAML自动转换为彼此的占位符
> from ent import json, yaml > json.loads('{"foo": true, "bar": null}') <Ent {'foo': True, 'bar': None}> > json.dumps(Ent(foo=True, bar=None)) u'{"foo": true, "bar": null}' > yaml.safe_load('bar: null\nfoo: true\n') <Ent {'foo': True, 'bar': None}> > yaml.dump(Ent(foo=True, bar=None)) u'baz: 1\nfoo: bar\n'
为什么
在处理配置或从JSON等来源获取的内容时,需要不断使用括号来访问嵌套数据结构,这可能会非常烦人。
假设我们有一个包含我的个人资料的JSON小文件
{ "name": "John Reese", "urls": { "blog": "https://noswap.com", "github": "https://github.com/jreese", "facebook": "https://#/nucleareclipse" } }
现在让我们读取该数据并使用标准的json模块打印一些数据
import json with open(...) as f: data = json.load(f) name = data['name'] url = data['urls']['github']
我们可以用ent做得更好
from ent import json with open(...) as f: data = json.load(f) name = data.name url = data.urls.github
安装
ent与Python 2.7+和Python 3.3+兼容。您可以使用以下命令从PyPI安装它
$ pip install ent
许可协议
ent版权所有2015年John Reese,并使用MIT许可协议授权。
项目详情
关闭
ent-0.3.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fef020d2f7db222fee188e7b6be92c8e0c5f94029848f0a89c9dff057c3bc7bc |
|
MD5 | 76ebe626ffbe1270903025675de1d733 |
|
BLAKE2b-256 | 4f37ab1179bbd7276a25c37fc442edbb626f12e57ff69c94eaff3a84d7ae7bc0 |