免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3824 | 回复: 1
打印 上一主题 下一主题

用列表的值去过滤某个特定的值lambda怎么写 [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2016-06-12 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-01-07 10:38 |只看该作者 |倒序浏览
本帖最后由 yakczh_cu 于 2018-01-07 11:13 编辑

filter是用某个特定值去过滤出list里面的元素 如果反过来呢 用某个list去过滤特定值
举个例子
爬到某个表格,有很多列,但是有些是不想要的数据,用关键词来过滤
示例代码 取出不包含['Regular security ','Off-cycle security','Off-cycle stability'] 的内容节点
  1. from pyquery import PyQuery as pq

  2. html='''
  3. <table>
  4. <tr><td>
  5. <i>Official version 0.3 release.</i><sup id="cite_ref-5" class="reference"><a href="#cite_note-5">[4]</a></sup>
  6. </td></tr>
  7. <tr><td><i>Off-cycle security and stability update.</i>
  8. </td></tr>
  9. <tr><td><i>Regular security and stability update.</td>
  10. </tr>
  11. <tr><td><i>Off-cycle stability update.</i></td>
  12. </tr>
  13. </table>
  14. '''

  15.         
  16. doc=pq(html)
  17. for tr in  doc("tr").items():
  18.     innerHTML= tr('td').eq(0).html()
  19.     if  -1< innerHTML.find('Regular security') or   -1< innerHTML.find('Off-cycle security') or  -1< innerHTML.find('Off-cycle stability') :
  20.         continue
  21.    
  22.     print innerHTML
复制代码

这样可以运行,但是如果配制的keyword多的话格式会很难看
如果改成这样
  1. exclude=['Regular security ','Off-cycle security','Off-cycle stability']
  2. for tr in  doc("tr").items():
  3.     innerHTML= tr('td').eq(0).html()
  4.     for keyWord in  exclude:
  5.         if -1< innerHTML.find(keyWord):
  6.             continue
  7.     print  innerHTML
复制代码
这样多出一层,continue不跳出外层循环
有没有简洁一点的写法?


论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
2 [报告]
发表于 2018-01-08 11:17 |只看该作者
回复 1# yakczh_cu

would you like to use 'set' data type

>>> exclude={'Regular security ','Off-cycle security','Off-cycle stability'}
>>> 'a' in exclude
False
>>> not 'a' in exclude
True
>>> not 'Regular security ' in exclude
False
>>> 'Regular security ' in exclude
True
>>> type(exclude)
<class 'set'>

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP