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

标签 python list string

我有一个列表:

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/

相关文章:

python - 在打包的 Electron 应用程序中包含 python 脚本

c# - 如何在c#中使用列表中的Except方法

python - python列表中的不连续切片

javascript - 替换字符串中的 onclick

python - 如何在甘特图中指示预期日期和实际日期?

python - 在 matplotlib-basemap 中绘制颜色编码标记

python - 创建项目后,创建一个继承全局站点包的 PyCharm 项目?

swift - SwiftUI 中类型 'some View' 的值没有成员 'onDelete'

php - 检查 MySQL 数据库中的唯一标识时出现问题

java - 如何将单词的指定最后一个字母匹配并替换为句子中的不同字母