Skip to main content
 首页 » 编程设计

python:仅当字符在此列表中时才保留字符

2025年05月04日8insus

我有一个列表:

a = ['a','b','c'.........'A','B','C'.........'Z'] 

我有字符串:

string1= 's#$%ERGdfhliisgdfjkskjdfW$JWLI3590823r' 

我只想保留 string1 中存在于 a 中的那些字符

最有效的方法是什么?也许不是让 a 成为一个列表,我应该把它变成一个字符串?像这样 a='abcdefg........ABC..Z' ??

请您参考如下方法:

这应该会更快。

>>> import re 
>>> string1 = 's#$%ERGdfhliisgdfjkskjdfW$JWLI3590823r' 
>>> a = ['E', 'i', 'W'] 
>>> r = re.compile('[^%s]+' % ''.join(a)) 
>>> print r.sub('', string1) 
EiiWW 

这比那更快。

>>> all_else = ''.join( chr(i) for i in range(256) if chr(i) not in set(a) ) 
>>> string1.translate(None, all_else) 
'EiiWW' 

44 微秒对比我笔记本电脑上的 13 微秒。

那怎么样?

(编辑:事实证明,翻译产生了最好的性能。)