所以你在每个角色上调用条带......然后是什么?您不更新字符串,因为字符串是不可变的并且i.strip不是就地操作.
对解决方案的一个天真的改进是在列表理解中过滤字符,然后join对结果进行处理:
vowels = {'i','o','a','u','e'}
def anti_vowel(text):
return ''.join([c for c in text if c not in vowels])
Run Code Online (Sandbox Code Playgroud)
小记:如果你的字符串包含混合大小写,你可能想要
text,或vowels到包含大写元音:vowels = set('aeiouAEIOU')或使用str.casefold(根据@Adam Smith的评论) - vowels在这种情况下不再需要进行分段:
return ''.join([c for c in text if c.casefold() not in vowels])
Run Code Online (Sandbox Code Playgroud)你可以得到甚至更好的str.translate(这个工程上的python-3.X):
mapping = str.maketrans(dict.fromkeys(vowels, '')) # create a global mapping once
def anti_vowel(text):
return text.translate(mapping))
Run Code Online (Sandbox Code Playgroud)