如果您正在寻找效率。使用translate 函数是最快的。
可用于快速替换字符和/或删除字符。
import string
delete_table = string.maketrans(
string.ascii_lowercase, ' ' * len(string.ascii_lowercase)
)
table = string.maketrans('', '')
"Agh#$%#%2341- -!zdrkfd".translate(table, delete_table)
在 python 2.6 中:您不再需要第二个表
import string
delete_table = string.maketrans(
string.ascii_lowercase, ' ' * len(string.ascii_lowercase)
)
"Agh#$%#%2341- -!zdrkfd".translate(None, delete_table)
这种方法比其他任何方法都快。当然,您需要将 delete_table 存储在某处并使用它。但即使您不存储它并每次都构建它,它仍然会比迄今为止其他建议的方法更快。
为了确认我的声明,这里是结果:
for i in xrange(10000):
''.join(c for c in s if c.islower())
real 0m0.189s
user 0m0.176s
sys 0m0.012s
运行正则表达式解决方案时:
for i in xrange(10000):
re.sub(r'[^a-z]', '', s)
real 0m0.172s
user 0m0.164s
sys 0m0.004s
[根据要求]如果您预编译正则表达式:
r = re.compile(r'[^a-z]')
for i in xrange(10000):
r.sub('', s)
real 0m0.166s
user 0m0.144s
sys 0m0.008s
以相同的次数运行 translate 方法:
real 0m0.075s
user 0m0.064s
sys 0m0.012s