以下是我会做它在Python 2:
def filter_string(s, remove):
'''given a string, s, remove characters in string, remove'''
return s.translate(None, remove)
如果你在Python 3:
def filter_string(s, remove):
return s.translate(str.maketrans('','',remove))
或者,如果你想不同的Python版本的兼容性:
import re
def filter_string(s, remove):
return re.sub('[' + remove + ']', '', s)
无论哪种方式,这里有用法:
>>> filter_string('foo (*& bar', '&(*')
'foo bar'
这里的时间,我的机器上的Python 3:
import timeit
setup = """
def filter_string_1(s, remove):
return s.translate(str.maketrans('','',remove))
import re
def filter_string_2(s, remove):
return re.sub('[' + remove + ']', '', s)
"""
timeit.timeit("filter_string_1('foo (*& bar', '&(*')", setup)
timeit.timeit("filter_string_2('foo (*& bar', '&(*')", setup)
对于我返回:
1.6555187609919813
2.7981851549993735
所以翻译的速度甚至比正则表达式这个简单的例子。
蟒蛇有很多英语样构建的,但你不能只建立随机的句子,并期望他们去做你想让他们什么。你在上面有很多错误源于这个:'对于str1和str2中的c:'和'if c == str1 and!= str2:'就是这样两个例子。我建议打开一个python教程,从头开始 - 花哨的'str.translate'或'''.join(gen expression)'答案不会教你太多。 – roippi