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

Python glom包初探

Python 四毛 3269浏览 12评论

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

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

喜欢 (7)or分享 (0)

我的个人微信公众号,联系我请直接在公众号留言即可~

扫码或搜索:进击的Coder

进击的Coder

微信公众号 扫一扫关注

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

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

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

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(12)个小伙伴在吐槽
  1. does sildenafil stop you from sleeping viagra 100mg where to buy sildenafil in dublin ireland
    viagra generic price2018-12-12 08:23 (5分钟前)回复
  2. can u snort tadalafil generic cialis online un cardiopatico può prendere il cialis.
    buy cialis online2018-12-10 11:05 (2天前)回复
  3. My partner and I absolutely love your blog and find the majority of your post's to be exactly I'm looking for. Would you offer guest writers to write content to suit your needs? I wouldn't mind creating a post or elaborating on most of the subjects you write with regards to here. Again, awesome web site!
    descargar facebook2018-12-06 19:44 (6天前)回复
  4. Thanks in favor of sharing such a nice idea, article is fastidious, thats why i have read it entirely
    Sling TV2018-12-06 02:45 (6天前)回复
  5. Link exchange is nothing else however it is only placing the other person's web site link on your page at suitable place and other person will also do similar in support of you.
    Sling TV2018-11-15 14:33 回复
  6. I'm not sure where you are getting your info, however good topic. I needs to spend some time studying more or working out more. Thanks for fantastic info I used to be on the lookout for this information for my mission.
  7. I do accept as true with all the ideas you have presented in your post. They are very convincing and will certainly work. Nonetheless, the posts are very quick for beginners. May you please extend them a bit from next time? Thanks for the post.
  8. Thanks in support of sharing such a pleasant thinking, post is good, thats why i have read it entirely
    Quest Bars Cheap2018-11-07 09:18 回复
  9. Just wish to say your article is as astounding. The clarity on your put up is just great and i could suppose you're an expert on this subject. Fine along with your permission let me to take hold of your feed to stay up to date with drawing close post. Thank you 1,000,000 and please keep up the gratifying work.
    quest bars cheap2018-11-04 12:55 回复
  10. Hello mates, how is all, and what you wish for to say about this post, in my view its really awesome for me.
  11. Python新手群【828125608】群内有安装包和学习视频资料,零基础,进阶,实战免费的在线直播免费课程,希望可以帮助你快速了解Python,欢迎加入群获取永久免费听课权限
    Python工程师2018-10-27 12:49 回复
  12. Hello, I think your website might be having browser compatibility issues. When I look at your blog in Opera, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, fantastic blog!
    Coconut Oil2018-10-25 19:33 回复