投稿    登录
  《Python3网络爬虫开发实战》赠书活动正在进行中!详情请戳赠书活动!欢迎参与!非常感谢!

Python glom包初探

Python 四毛 1038浏览 53评论

大家好, 我不是崔老师,我是四毛,下面是我的个人公众号,欢迎大家关注。

好久没有写东西了,一直都记录在了自己的笔记上,这一篇是关于glom的一个介绍与初步使用,后期会将里面的各种API再给大家介绍下,同时,最近在搞爬虫的实时数据监控,也挺有意思,后面会和大家分享,敬请期待。

猛然发现,英语水平巅峰就在高考那一天。

因为是边看,边练习,然后翻译,所以个人理解可能有偏差,有错误的地方,请大家指正。

首先,这个库是用来处理一些嵌套的数据的,作者也在PyCon 2018上做了个分享,老美的PyCon还是有点质量的,不像国内的,搞的什么玩意。

视频地址:https://www.youtube.com/watch?v=bTAFl8P2DkE&t=18m07s

 

更新: 2018年7月28日10:32:08

经过咨询库的作者,在最后留的那个问题的准确解法如下:

非常棒,准确来说就是得灵活运用Coalesce方法啊,不能太死板。非常Pythonic。

另附网址,作者有个很搞笑little four hair ,哈哈哈哈

Issue地址

 

1. 官方文档地址

文档地址

2. 安装方法

3. 正式开始

glom,官方的说法是用PYTHONIC的方式来处理内嵌的数据。对于现实世界中的数据处理更加给力,现实世界中的数据,我的理解就是AJAX越来越流行了,处理这类数据会越来越频繁。有如下特点:

  • 对于嵌套数据结构的基于路径式的访问
  • 可读,有意义的错误消息
  • 声明性数据转换,使用轻量级,Pythonic规范
  • 内置数据探索和调试功能

     3.1 原始处理嵌套数据

下面的脚本包导入

下面的data就是个简单的嵌套数据,一般都可以用下面几种方法进行处理

但是当我们的数据改变成下面的这样时:

会报错,而且由于是嵌套数据,从错误信息里我们只知道有个None值,但是到底谁是呢,是a,是b呢,反正肯定不是我们的朋友小哪吒。

    3.2 glom出场

那么glom怎么处理上面的数据呢?

如其所言,路径式:

看起来还是很优雅, 很Pythonic。

错误信息如下:

很明显,这个错误就很直观。

难道仅仅只有这个?当然不是

     3.2.1  Going Beyond Access

上面的是原标题,我的理解是不仅仅获取数据,还有别的呢。

首先,介绍两个基本的术语

现在让我们跟随宇航员的脚步,探索太阳系吧。

  • 获取某个行星的名字:

  • 现在,宇航员们想把行星的名字放进一个列表中,数据是这样:

  • 通常,处理这样的话,都要写个循环,或者搞个列表解析式,那么glom怎么处理呢?

是不是很简单。那么现在新需求又来了,宇航员想得到下面这个数据里面的行星的卫星的数:

  • glom解决方法:

     3.2.2  Changing Requirements

Coalesce 是glom定义的一种结构,允许我们对于spec中的子spec进行进一步的处理,你只要在子spec中将可能存在的值定义好就行了,听起来有点绕,现在来梳理一下。

  • 首先,子spec是什么?

  • 然后,使用其解析数据:

  • 接着当我们的数据变成了这个以后

可以看到,依然可以使用相同的spec来解析不同的目标数据。

有意思的是,你可以在target里面同时写入plantes和dwarf_plants数据试试看,会返回什么数据。

【这里应该是个惰性的匹配,只要匹配到一个,后面的就不再去匹配了】

     3.2.3  True Python Native

真正的原生python

在glom里面,你可以传值给python里面的任意的函数

举例:

  • 求和

原教程这里还有个案例,但是我还没有理解好,就不写出来了,大家可以点击链接自己看一下。

 

4. 结论

下一节,为大家带来其中一些重要的函数。

最后,在用的过程中,一直有个疑问,数据如下:

现在,我想返回的数据格式为:

一开始我以为可以这么用:

但是不行,这样会报错。后来用了另外的方法:

这样感觉很不爽啊,还望会的同学不吝赐教啊。

转载请注明:静觅 » Python glom包初探

喜欢 (2)or分享 (0)

想学更多爬虫知识?《Python3网络爬虫开发实战》这本书也许更适合你~

了解详情or立即购买

我的个人微信公众号

扫码或搜索:进击的Coder

进击的Coder

微信公众号 扫一扫关注

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(53)个小伙伴在吐槽
  1. wh0cd91595 tadalafil no prescription
    AaronWed2018-08-03 10:50 回复
  2. prettywithribbons.com
    AlvinEpids2018-08-03 10:49 回复
  3. prettywithribbons.com
    Larryliege2018-08-03 10:35 回复
  4. maturesexcraft.com
    DennisFug2018-08-03 09:56 回复
  5. adultdating.us.com
    RobertElaks2018-08-03 09:55 回复
  6. wh0cd2169 website
    Kennethlen2018-08-03 09:53 回复
  7. wh0cd281040 vardenafil levitra
    Bennyciz2018-08-03 09:47 回复
1 2 3 4