本文实例讲述了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