如果想从一个含有数字,汉字,字母的列表中滤除仅含有数字的字符,当然可以采取正则表达式来完成,但是有点太麻烦了,因此可以采用一个比较巧妙的方式:
1、正则表达式解决
python" id="highlighter_423375">
1
2
3
4
5
6
7
8
9
10
11
|
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
7
|
l = [ 'xiaohong' , '12' , 'adf12' , '14' ,u '晓明' ]
for x in l:
try :
int (x)
except :
print x
|
3、使用string内置方法
1
2
3
4
5
6
|
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
14
15
16
17
18
19
20
|
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