本文实例总结了python实现简易过滤删除数字的方法。分享给大家供大家参考,具体如下:
如果想从一个含有数字,汉字,字母的列表中滤除仅含有数字的字符,当然可以采取正则表达式来完成,但是有点太麻烦了,因此可以采用一个比较巧妙的方式:
1、正则表达式解决
1
2
3
4
5
6
7
|
import re l = [u '小明' , '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 ] elif isinstance (l[i], unicode ): print l[i] |
2、巧妙地避开正则表达式
1
2
3
4
5
6
|
l = [ 'xiaohong' , '12' , 'adf12' , '14' ,u '晓明' ] for x in l: try : int (x) except : print x |
3、使用string内置方法
1
2
3
4
5
|
l = [ 'xiaohong' , '12' , 'adf12' , '14' ,u '晓明' ] #对于python3来说同样还可以使用string.isnumeric()方法 for x in l: if not x.isdigit(): print x |
4、去除两端的数字
如果只是去除两端可能含有数字的字符串里的数字,则可以使用内置的strip
,方式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
in [ 24 ]: import string in [ 25 ]: astring = '12313213215just for 32 test 1306436' in [ 26 ]: astring.strip(string.digits) out[ 26 ]: 'just for 32 test ' in [ 27 ]: astring.rstrip(string.digits) out[ 27 ]: '12313213215just for 32 test ' in [ 30 ]: astring.lstrip(string.digits) out[ 30 ]: 'just for 32 test 1306436' #注意 in [ 31 ]: astring out[ 31 ]: '12313213215just for 32 test 1306436' in [ 32 ]: astring.strip( '0123456' ) out[ 32 ]: 'just for 32 test ' |
.strip([char])
中的 char 给定时,则截取两端的字符直到满足不在set(char)
中,不需要有序,切记!
以下分别是python2和python3中string的方法:
希望本文所述对大家python程序设计有所帮助。
原文链接:https://blog.csdn.net/xiaodongxiexie/article/details/56683433