我有一个列表:
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 微秒。
那怎么样?
(编辑:事实证明,翻译产生了最好的性能。)
关于python:仅当字符在此列表中时才保留字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3588452/