数据转换与操作库

easydata的Python项目详细描述


Build statusDocumentation Statuscode style blackpypi package version
warning:^{tt1}$ is in early stages of development; backwards incompatible changes are possible without deprecation warning until beta status is reached and therefore is not suitable to be used in production.

概述

EasyData是提供项数据转换的数据对象模式 从各种源(文本、html、xml、json、字典、列表等)到 python字典,甚至可以按顺序组合不同类型的源代码 转换成字典。在

它在炉边使用基于组件的映射,其概念类似于ORM 模型。在

文件

文档可在https://easydata.readthedocs.io/和^{tt3}在线获得$ 目录。在

使用EasyData的好处是:

  • 关注面向对象的业务逻辑
  • 不同源之间的统一提取逻辑
  • 大大加快了创建转换器/解析器的开发过程
  • 由于它提供了清晰的可读性和 明确每个组件的功能。在
  • 提取和解析逻辑的可重用性
  • 用于解析的高级和低级选项,这样我们就不会遇到任何限制
  • 根据需要创建自定义组件的选项
  • 默认值可以通过不同级别的配置进行更改
  • 创建测试用例是一件轻而易举的事,因为每个组件都是为了 必要时可单独使用。在
  • 自动完成功能适用于公共类或方法上的所有参数。在

应用:

  • 刮网。它可以很容易地与scrapy或任何其他python集成 基于解决方案,甚至是您自己的解决方案。在
  • 转换来自不同格式的APIFEED的数据。在
  • 正在为APIFEED转换/准备数据。在
  • 为数据库转换/准备数据。在

注意

EasyData没有绑定到任何框架,它也不是一个框架,它可以 很容易添加到现有项目中。在

要求

  • Python 6.3+
  • 适用于Linux、Windows、macOS、BSD

安装

捷径:

pip install easydata

请参阅文档中的“安装”部分,网址为 https://easydata.readthedocs.io/en/latest/installation.html了解更多详细信息。在

示例

下面我们将给出一个简单的例子,这样你可以得到一些介绍, EasyData的工作原理。有关更高级的示例或教程,请参阅 到文档。在

让我们对以下HTML进行转换:

^{pr2}$

现在让我们创建一个ItemModel,它将处理上面的HTML,并将其解析为 项目dict。在

fromeasydataimportItemModel,parsersfromeasydata.queriesimportpqclassProductItemModel(ItemModel):item_name=parsers.Text(pq('.name::text'),)item_brand=parsers.Text(pq('.brand::text'))item_description=parsers.Description(pq('#description::text'))item_price=parsers.PriceFloat(pq('#price::text'))item_sale_price=parsers.PriceFloat(pq('#sale-price::text'))item_color=parsers.Feature(pq('#description::text'),key='color')item_stock=parsers.Bool(pq('.stock::attr(available)'),contains=['yes'])item_images=parsers.List(pq('.images img::items'),parser=parsers.UrlParser(pq('::src')))"""
    Alternative with selecting src values in a first css query:

        item_images = parsers.ListParser(
            pq('.images img::src-items'),
            parser=parsers.UrlParser()
        )
    """

在下面的示例中,我们将演示新创建的ProductItemModel 将把提供的HTML数据解析为dict对象。在

>>>item_model=ProductItemModel()>>>item_model.parse(test_html)

输出:

{'brand':'EasyData','description':'Basic product info. EasyData product is newest addition \
                    to python world. Color: Black. Material: Aluminium.','color':'Black','images':['http://demo.com/img1.jpg','http://demo.com/img2.jpg','http://demo.com/img3.jpg'],'name':'EasyData Test Product Item','price':99.9,'sale_price':49.9,'stock':True}

贡献

是的,请!我们一直在寻找贡献、补充和改进。在

有关详细信息,请参见https://easydata.readthedocs.io/en/latest/contributing.html。在

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

推荐PyPI第三方库


热门话题
java不兼容类型:MainActivity无法转换为LifecycleOwner   java安卓是一种更有效的读取大文本文件的方法   java导出LWJGL本地人与项目?(IntelliJ IDEA)   JDK更新后,JavaJShell不再在下一行打印输出   父类对象上的继承Java比较子属性   Java:有没有一个容器可以有效地结合HashMap和ArrayList?   安卓 Java对象指针   java在annotationdriven Spring MVC应用程序中实现大气   java 安卓源代码构建应用找不到安卓supportv4。罐子   文件系统上的抽象层和Java中的jar/zip   java在水平滚动视图中添加多个图像?   java如何从firebase实时数据库中获取字符串数组   WIndows 10工作站上的java未满足链接错误   java命令在终端中工作,但在使用过程中出现“无结束引号”错误。执行官