清理凌乱的数据。

dripper的Python项目详细描述


清理凌乱的数据。

Getting started

考虑清理一些混乱的数据。 这是一个深度嵌套字典,包含许多不必要的嵌套和元组。

some_messy_data={"body":{"article":{"articlesbody":{"articlesmeta":{"articles_meta_3":"Monty Python",}}},},"published":{"datetime":("2014-11-05","23:00:00"),}}

您需要的值是'Monty Python''2014-11-05', 应该命名为'title''published_date'

现在让黑客从dripper开始。

  • 玷污declaration字典
  • 通过dripper.dripper_factory
  • 创建滴头对象
  • 滴滴基本数据
# Definedeclaration={"title":("body","article","articlesbody","articlesmeta","articles_meta_3"),"published_date":("published","datetime",0)}# Createimportdripperd=dripper.dripper_factory(declaration)# And dripdripped=d(some_messy_data)assertdripped=={"title":"Monty Python","published_date":"2014-11-05",}

Installation

只需使用pip安装

pip install dripper

要求

dripper不需要任何类型的外部库。 支持python的版本有:

  • python 2.7版
  • Python3.3
  • Python3.4
  • Python3.5

Basics

上面的例子并不是dripper的所有特性。 创建它是为了处理要清理的各种数据。

as值

fromdripperimportdripper_factorydeclaration={"title":("meta","meta1")})d=dripper_factory(declaration)d({"meta":{"meta1":"Monty Python"}})=={"title":"Monty Python"}

也可以直接指定字符串或整数。 它与一个元素元组相同。

fromdripperimportdripper_factorydeclaration={"title":"meta"})d=dripper_factory(declaration)d({"meta":"Monty Python"})=={"title":"Monty Python"}

作为dict

dripper可以定义嵌套字典。 只需将嵌套字典传递给dripper_factory

fromdripperimportdripper_factorydeclaration={"article":{"title":["meta","meta1"],}})d=dripper_factory(declaration)d({"meta":{"meta1":"Monty Python",},})=={"article":{"title":"Monty Python",}}

您可以应用'__source_root__'来设置滴水的根路径。

declaration={"article":{"__source_root__":("body","meta"),..."title":"meta1","author":("meta2","meta22"),}})d=dripper_factory(declaration)d({"body":{"meta":{"meta1":"Monty Python","meta2":{"meta22":"John Due"}}}})=={"article":{"title":"Monty Python","author":"John Due",}}

从技术上讲,declaration的最外层字典与内部字典相同。 所以您可以指定'__source_root__'字典。

列表

dripper可以定义字典列表。 您需要申请'__type__': 'list'

fromdripperimportdripper_factorydeclaration={"articles":{"__type__":"list","__source_root__":"articles",..."title":"meta1","author":["meta2","meta22"],}})d=dripper_factory(declaration)d({"articles":[{"meta1":"Monty Python","meta2":{"meta22":"John Doe"}},{"meta1":"Flying Circus","meta2":{"meta22":"Jane Doe"}},]})=={"articles":[{"title":"Monty Python","author":"John Doe"},{"title":"Flying Circus","author":"Jane Doe"},]}

Advanced

转换

使用dripper.ValueDripper传递转换器函数。

importdripperdeclaration={"title":dripper.ValueDripper(["title"],converter=lambdas:s.lower())}d=dripper.dripper_factory(declaration)d({"title":"TITLE"})=={"title":"title"}

从技术上讲,每个端点(列表)将被dripper.ValueDripper的实例替换。

默认值

指定default关键字参数以更改默认值。 None将作为默认值应用。

importdripperdeclaration={"title":dripper.ValueDripper(["title"],default="default")}d=dripper.dripper_factory(declaration)d({})=={"title":"default"}

从技术上讲,每个端点(列表)将被dripper.ValueDripper的实例替换。

组合

通过组合dripper.ValueDripper,将组合该键的结果值。

importdripperdeclaration={"fullname":(dripper.ValueDripper(["firstname"])+dripper.ValueDripper(["lastname"]))}d=dripper.dripper_factory(declaration)d({"firstname":"Hrioki","lastname":"Kiyohara"})=={"fullname":"HriokiKiyohara"}

CHANGES

1.2

1.1

  • NoneValueDripper
      的默认值。
    • 在此更改之前ValueDripper不带default关键字参数 将提高DrippingError
    • 为了这个行为,DictDripper将返回空的dict 当内部值dripper无法挖掘出值时
    • 感谢@bungoume推荐这种行为

1.0

  • 官方支持的Python3.5

0.3.1

  • valuedripper现在接受default参数。

0.3

  • 固定为直接接受字符串或整数作为源根。

0.2

  • 改进了错误处理。
  • 添加了mixdripper。

0.1

  • 初始版本

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

推荐PyPI第三方库


热门话题
使用JPT测试jira性能时,java无法识别jiraaddress   java com。fasterxml。杰克逊。数据绑定。JsonMappingException:数值(1557587751202)超出int的范围   war中打包后资源中文件的java FileNotFoundException   java调整JPanel中的JTable大小   java将的ArrayList字符串转换为字符?   web项目中的java我们可以在不了解UI的情况下编写核心服务层吗?   java Android Studio如何从Firebase数据库获取名称的用户日志?   java构建同步映射,在单个键上阻塞   springboot中基于实体camelcase变量nam的java命名存储库方法   java数组行中数字的移动   java NumberFormat执行选项   使用JAVA编码EDIFACT映射   java Selenium 3.0.1,新的FirefoxDriver+木偶卡在起始页上   使用导入java*怎么样用于使用包“java”下的所有子包?   在Groovy(或Java)中如何将字符串数组的所有索引包含到一行中   swing为什么我的图像不显示?(JavaGUI)