可以利用正则表达式来去除
既然说到了字符串的操作,那么就目前而言是没有别的方法会比正则表达式更加方便的:
正则表达式中代表非字母的写法如下:
[^a-zA-Z]
#code:
#out:
其实除了正则表达式来截取外,python中String也提供了方法来判断字符是否为字母字符:
isalpha()方法 判断当前索引的字符是否为字母返回布尔类型
#code:
#out:
其实上述利用isalpha()的写法还可以简写一点,可以利用python可以把表达式当成参数的写法来:
#code:
表达式返回的为一个字符列表,这里使用join方法把空字符加入到字符列表中组成了一个新的字符串返回。
#out:
去掉字符串中字母以外的字符,在Python编程语言中有多种实现方式。
Python中的str类型,有一个isalpha()方法,判断字符是否是英文字符。可以使用循环逐个字符判断是否是英文字符,如果是英文字符则加入新的字符串。
oldS = 'as30wejl2@2]sjls'以上代码可以使用表理解浓缩成一行,表理解返回的结果是一个list,因此需要用空字符串''连接。
print ''.join([x for x in oldS if x.isalpha()])上面的实现方式可以完成任务,但仍然不够凝练。最佳的实现方式是使用正则表达式匹配非英文字母,将其替换成空字符,这可以使用re包的sub()函数实现。
import re上述正则表达式[^a-zA-Z],就是用于匹配非英文字符。