【前言】在写爬虫时,正则表达式有时候比较难写,一个是自己不熟练,二者数据分析提取数据千奇百怪。

 一、好在python有个re模块,提供了很多更加简便的方法;可参考此文档:https://www.cnblogs.com/tina-python/p/5508402.html

 二、但有时候,不能实现过滤抽取的功能,python提供了filter函数。 可参考:  http://www.runoob.com/python/python-func-filter.html

具体的应用:

 1 crazystring = 'dade142.!0142f[., ]ad'
2
3 # 只保留数字,使用内置方法str.isdigit
4 new_crazy = filter(str.isdigit, crazystring)
5 print(''.join(list(new_crazy)))
6 # 只保留字母
7 new_crazy = filter(str.isalpha, crazystring)
8 print(''.join(list(new_crazy)))
9
10
11 # 只保留字母和数字
12 new_crazy = filter(str.isalnum, crazystring)
13 print(''.join(list(new_crazy)))
14
15 # 如果想保留数字0-9和小数点’.’ 则需要自定义函数
16 #下面使用lambda表达式,方便快捷
17 new_crazy = filter(lambda ch: ch in '0123456789.', crazystring)
18 print(''.join(list(new_crazy)))

其中的str.isdigit是其内置方法。

我们也可以自己定义规则,不如只过滤出奇数:

#!/usr/bin/python
# -*- coding: UTF-8 -*- def is_odd(n):
return n % 2 == 1 newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(newlist)

定义函数时,可以使用lambda表达式,这样会更加方便。

三、我的具体应用场景

  在写爬虫分析验证码时,用腾讯云分析回的json文件,提取验证码时用到正则匹配。一直找python的正则表达式,不好找也不好写。

1、对传回的json数据,做一个正则提取:

r_index = r'itemstring":"(.*?)"'  

2、然儿,提取的二维码总会有噪声,(.*?)是将所有数据都提取出来了。但是,我们深度学习识别出来的二维码有噪声,会有‘\'、‘_’、或者空格。需要二次处理。目标是提取数字和字母,不含有任何空格和噪声。使用"\W+",会有下划线。我们使用:

#接在上面的语句后面,进一步过滤
new_index = filter(str.isalnum, r_index)

3、最终可以实现百分之九十准确率。当然离不开深度学习算法对数字识别率高。

最新文章

  1. DataGridView绑定复杂实体(属性本身又是实体)
  2. 学习Swift,一定不能错过的10大开源项目!
  3. Encapsulation and Requiring Files
  4. 简单方法打包.net程序集脱离framework
  5. ios 开发指南
  6. DDL
  7. WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
  8. Windows Phone 同步方式获取网络类型
  9. Binder机制,从Java到C (3. ServiceManager in Java)
  10. 第七十七节,CSS3前缀和rem长度单位
  11. Java后端面试的一切技巧和常见的问题经验总结
  12. Oracle 中DATE类型的计算
  13. 621. Task Scheduler
  14. python logging日志输出个文件中
  15. java的类属性默认有this 但容易与参数重名 所以需要显性的加上this 以分区别
  16. Eclipse中的特殊注释:TODO、XXX、FIXME
  17. 奔跑吧DKY——团队Scrum冲刺阶段-Day 6
  18. 响应式开发(二)-----Bootstrap框架的介绍
  19. [应用篇]第五篇 JSTL之fmt标签日期和数字格式化
  20. python's unittest

热门文章

  1. labuladong 算法小抄
  2. A - A Supermarket (贪心, 并查集)
  3. 2019 ICPC Asia Nanjing Regional
  4. hdu1394Minimum Inversion Number
  5. Python实现AES的CBC模式加密和解密过程详解 和 chr() 函数 和 s[a:b:c] 和函数lambda
  6. - Visible Trees HDU - 2841 容斥原理
  7. Find a multiple POJ - 2356
  8. JavaScript——内置对象
  9. 牛客编程巅峰赛S1第11场 - 黄金&钻石 C.牛牛找子集 (二分)
  10. eclipse中使用debug,显示参数配置