清理凌乱的数据。

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第三方库


热门话题
利用SWAP函数解决互斥的同步Java死锁   主线程退出时程序的java终止?   java Firestore字段空类型用法   java Android在同一页面上滚动到ID   java Eclipse:将源代码文件夹导入其他项目   maven Groovy编译以“java”结尾。StackOverflowerr语言`   java从变量中获取变量列表   java在Eclipse中重命名标识符时输入vs转义   Java:创建一个只包含重复项的数组   java Mule ESB 3.3 Mulecontext注册表pop   bash杀戮屏幕但java进程未结束   java正在创建一个表来存储一行错误编程的迹象?   java如何启动RecentApplicationDialog?   java以确定的增量移动字符串中的字符   使用用户输入搜索多个mysql数据库的JavaJSP算法   java Arraylist到DefaultComboxModel