如何编写一个函数removeThese(stringToModify,charsToRemove),它将返回一个新的字符串,该字符串是从原始字符串stringToModify中删除了charsToRemove中出现的字符。
>>> s = 'stringToModify'
>>> rem = 'oi'
>>> s.translate(str.maketrans(dict.fromkeys(rem)))
'strngTMdfy'
>>> string_to_modify = 'this is a string'
>>> remove_these = 'aeiou'
>>> ''.join(x for x in string_to_modify if x not in remove_these)
'ths s strng'
if x not in set(remove_these)
。 - Robert Rossneyfilter
接受一个谓词和一个序列,并返回一个仅包含原始序列中谓词为真的项的序列。在这里,我们只想要来自s
而不是rm
的所有字符。>>> s = "some quick string 2 remove chars from"
>>> rm = "2q"
>>> filter(lambda x: not (x in rm), s)
"some uick string remove chars from"
>>>
import re
newString = re.sub("[" + charsToRemove + "]", "", stringToModify)
import re
print re.sub("[amz]", "", "the quick brown fox jumped over the lazy dog")
re.sub("[m-s]", "", "the quick brown fox jumped over the lazy dog")
charsToRemove
设为 ^x
或 0-9
,你会发现这个建议还有许多其他问题。 - Robert Rossneyre.escape(charsToRemove)
可以解决这个问题。但是正则表达式仍然不是解决此问题的最佳方案。str.translate
才是胜利者。 - Day
maketrans(dict.fromkeys(rem))
会生成错误,因为maketrans()
函数需要接受两个参数。 - Grijesh Chauhan