Python:只保留字符串中的字母

时间:2015-12-11 00:16:06

标签: python python-2.7

从字符串中删除不在字母表中的所有字符的最佳方法是什么?我的意思是,删除所有空格,interpunction,括号,数字,数学运算符..

例如:

input: 'as32{ vd"s k!+'
output: 'asvdsk'

3 个答案:

答案 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'符合预期。