SimplePath是一个考虑性能的字典查找实用程序/映射器

simplepath的Python项目详细描述


https://badge.fury.io/py/simplepath.pnghttps://travis-ci.org/dealertrack/simplepath.png?branch=masterhttps://coveralls.io/repos/dealertrack/simplepath/badge.svg

simplepath是用于数据结构查找的库 使用超级简单的表达方式并考虑性能。 “simplepath”是其他一些*path技术上的文字播放 例如xpathjsonpathjpath等。

灵感

创作simplepath的灵感来自表演。许多其他的 图书馆专注于进行单一的查找,不管它们是如何下降的 当需要查询大量数据时缩短。

例如,如果需要转换具有某种结构的词典 另一本结构不同的词典 可配置的方法可能是定义配置 其中键将是输出字典的键, 值将是查找表达式以获取适当的数据:

{
    "greetings": "foo.greeting",
    "planet": "foo.[0].planet",
    ...
}

上面的方法很容易实现,但是性能不是很好。 因为每次查找都必须计算查找表达式。 在Dealertrack,我们需要做一些类似的事情 试过jsonpath-rw 有时只需要15秒就可以绘制字典 几百个表情。经过调查,大部分 时间花在ply上。 不幸的是,我们没有找到另一个类似的图书馆 完成了我们需要的一切,并满足了我们的表现 需求,所以simplepath诞生了。

安装

您可以使用pip:

安装simplepath
$ pip install simplepath

快速指南

下面是一个简单的例子。

from simplepath.mapper import Mapper

class MyMapper(Mapper):
    config = {
        'greetings': 'example.greetings',
        'to': 'example.planets.<find:planet=Earth>.residents',
    }

data = {
    'example': {
        'greetings': 'Hello',
        'planets': [
            {
                'planet': 'Mars',
                'residents': 'martians',
            },
            {
                'planet': 'Earth',
                'residents': 'people',
            },
            {
                'planet': 'Space',
                'residents': 'aliens',
            },
        ]
    }
}

MyMapper.map_data(data) == {
    'greetings': 'Hello',
    'to': 'people',
}

测试

要运行测试,您需要首先安装测试要求:

$ make install

然后,要运行测试,可以使用nosetests或简单地使用makefile命令:

$ nosetests -sv
# or
$ make test

历史记录

0.3.5(2018-06-14)

  • 修复了将None值映射到ListConfig将导致TypeError的错误

0.3.4(2017-07-28)

  • 使用车轮进行分配
  • 已从打包中删除测试
  • 切换到使用python 3.6与3.5运行travis构建

0.3.3(2016-05-15)

  • 修复了全局lut在调用表达式时泄漏数据的错误 在自定义查找中。见#11
  • 切换到使用python 3.5与3.4运行travis构建

0.3.2(2015-09-14)

  • 已将AsTypeLookupArithmeticLookup注册为as_typearith查找 在默认查找注册表中

0.3.1(2015-08-28)

  • 添加了AsTypeLookupArithmeticLookup

0.3.0(2015-07-15)

  • 增加了在SimplePath配置中使用列表的能力,该配置将在映射数据中生成列表

0.2.0(2015-06-26)

  • 添加了deepvars实用程序,在对对象使用simplepath时非常有用

0.1.1(2015-03-31)

  • 修复了包说明中指向回购协议的链接

0.1.0(2015-01-08)

  • 首次发布

学分

此实用程序是在dealertrack technologies创建的 (dealertrack GitHub)内部使用,谢谢 允许贡献实用程序的dealertrack 到开源社区。

开发领导

贡献者

许可证

麻省理工学院许可证(MIT)

版权所有(c)2014,Dealertrack Technologies

兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于S公司 使用、复制、修改、转到、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:

上述版权声明和本许可声明应包括在: 软件的所有副本或大部分。

软件按原样提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合某一特定目的和非侵犯性。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在诉讼或合同中,侵权行为或其他,产生于, 不属于或与软件、使用或其他交易有关 软件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Grails2.1.0/Java7在Windows8.1上从何处获取当前用户名?   JavaSpringJMSActiveMQ   java异常处理,捕获导致while循环停止   sql server 2008将日期时间解析为JAVA日期   java是第一个servlet,但无法打开它   如何在Java中使用XML bean创建典型的XML头?   java将iOs应用程序转换为Android   java将jsp页面内容读取到其他jsp页面中的html   客户端计算机中小型数据库应用程序的java实现   java同步和ServletContextListener   安卓 Java将所有转义字符替换为双转义   当我在布局单元中实现ScrollView时,java GridView的setOnItemLongClickListener不起作用(使用适配器)   禁用Java web服务端点Wsdl   java如何编写一个程序来反转用户输入的数字