python筛选数字_Python 过滤字母和数字

本文介绍使用Python的filter函数及正则表达式进行数据提取的方法,重点讲解如何从复杂数据中精准提取数字与字母,去除干扰字符,并结合深度学习提高验证码识别准确性。

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

一、好在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.isdigit4 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 == 1newlist= 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、最终可以实现百分之九十准确率。当然离不开深度学习算法对数字识别率高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值