本文实例讲述了Python简单过滤字母和数字的方法。分享给大家供大家参考,具体如下:
实例1
1
2
3
4
5
6
7
8
9
10
11
12
13
|
crazystring = 'dade142.!0142f[., ]ad' # 只保留数字 new_crazy = filter ( str .isdigit, crazystring) print (''.join( list (new_crazy))) #输出:1420142 # 只保留字母 new_crazy = filter ( str .isalpha, crazystring) print (''.join( list (new_crazy))) #睡出:dadefad # 只保留字母和数字 new_crazy = filter ( str .isalnum, crazystring) print (''.join( list (new_crazy))) #输出:dade1420142fad # 如果想保留数字0-9和小数点'.' 则需要自定义函数 new_crazy = filter ( lambda ch: ch in '0123456789.' , crazystring) print (''.join( list (new_crazy))) #输出:142.0142. |
上述代码运行结果:
1420142
dadefad
dade1420142fad
142.0142.
实例 2
1.正则表达式
1
2
3
4
5
6
7
8
9
10
11
12
|
import re L = [ '小明' , 'xiaohong' , '12' , 'adf12' , '14' ] for i in range ( len (L)): if re.findall(r '^[^\d]\w+' , L[i]): print (re.findall(r '^\w+$' , L[i])[ 0 ]) 避开正则表达式 L = [ 'xiaohong' , '12' , 'adf12' , '14' , '晓明' ] for x in L: try : int (x) except : print (x) |
使用string
内置方法
1
2
3
4
5
6
7
8
|
L = [ 'xiaohong' , '12' , 'adf12' , '14' , '晓明' ] # 对于python3来说同样还可以使用string.isnumeric()方法 for x in L: if not x.isdigit(): print (x) # for x in L: # if not x.isnumeric(): # print(x) |
运行输出:
xiaohong
adf12
晓明
实例 3
要进行中文分词,必须要求数据格式全部都是中文,需求过滤掉特殊符号、标点、英文、数字等。当然了用户可以根据自己的要求过滤自定义字符。
1
2
3
4
5
|
import re x = 'a12121assa' x = '1服务器之家1' r1 = '[a-zA-Z0-9' !" #$%&\'()*+,-./:;<=>?@,。?★、…【】《》?“”‘'![\\]^_`{|}~]+' print (re.sub(r1, '', x)) |
运行结果:
服务器之家
参考:http://www.zzvips.com/article/163217.html
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/yanqianglifei/article/details/80486662