从字符串中删除不在字母表中的所有字符的最佳方法是什么?我的意思是,删除所有空格,interpunction,括号,数字,数学运算符..
例如:
input: 'as32{ vd"s k!+'
output: 'asvdsk'
答案 0 :(得分:25)
你可以使用re
,但你真的不需要。
>>> s = 'as32{ vd"s k!+'
>>> ''.join(x for x in s if x.isalpha())
'asvdsk'
>>> filter(str.isalpha, s) # works in python-2.7
'asvdsk'
>>> ''.join(filter(str.isalpha, s)) # works in python3
'asvdsk'
答案 1 :(得分:6)
如果你想使用正则表达式,这应该更快
import re
s = 'as32{ vd"s k!+'
print re.sub('[^a-zA-Z]+', '', s)
打印
'asvdsk'
答案 2 :(得分:1)
这是一种方法,它使用ASCII范围来检查字符是否为大写/小写字母(如果是,则将其附加到字符串):
s = 'as32{ vd"s k!+'
sfiltered = ''
for char in s:
if((ord(char) >= 97 and ord(char) <= 122) or (ord(char) >= 65 and ord(char) <= 90)):
sfiltered += char
变量sfiltered
将显示结果,'asvdsk'
符合预期。