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

Python glom包初探

Python 四毛 2213浏览 65评论

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

好久没有写东西了,一直都记录在了自己的笔记上,这一篇是关于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包初探

喜欢 (5)or分享 (0)

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

了解详情or立即购买

我的个人微信公众号

扫码或搜索:进击的Coder

进击的Coder

微信公众号 扫一扫关注

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

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

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

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(65)个小伙伴在吐槽
  1. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You obviously know what youre talking about, why waste your intelligence on just posting videos to your site when you could be giving us something enlightening to read?
    tinder dating site2018-10-18 12:17 (6分钟前)回复
  2. Do you have a spam problem on this site; I also am a blogger, and I was wanting to know your situation; we have created some nice procedures and we are looking to exchange strategies with other folks, be sure to shoot me an e-mail if interested.
    tinder dating site2018-10-16 21:43 (2天前)回复
  3. I was wondering if you ever considered changing the structure of your website? Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better. Youve got an awful lot of text for only having one or 2 pictures. Maybe you could space it out better?
    minecraft free download 20182018-10-11 22:22 (7天前)回复
  4. First off these 7y0gfkir http://7y0gfkir.ml/ are insanely lovable and pleasant. I couldn't decide at first but then I went with them. they is unique and everyone at my school has! Get these now YOU is going to be a trendsetter.
    7y0gfkir2018-10-11 13:27 (7天前)回复
1 3 4 5