我想从所输入的任何字符串中删除所有元音。我正在尝试使代码尽可能简单。
感谢您的帮助。
print "\\exname{"noext"}"
答案 0 :(得分:8)
所以你在每个角色上调用条带......然后是什么?您不更新字符串,因为字符串是不可变的,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])
小注意:如果你的字符串包含大小写混合,你可能想要
text
或vowels
扩充为包含大写元音:vowels = set('aeiouAEIOU')
或使用str.casefold
(根据@Adam Smith的评论) - 在这种情况下不再需要使用vowels
:
return ''.join([c for c in text if c.casefold() not in vowels])
使用str.translate
可以更好地甚至(这适用于python-3.x):
mapping = str.maketrans(dict.fromkeys(vowels, '')) # create a global mapping once
def anti_vowel(text):
return text.translate(mapping))
答案 1 :(得分:1)
两个问题:
strip
是错误的方法;它只从字符串的开头和结尾删除。使用.replace(something, '')
。strip
返回修改后的字符串。答案 2 :(得分:0)
此代码也有效!编写anwser的家伙删除了他们的帖子。羞耻它工作得很好。
liz = ("Totally not going to hitting the big bong at the event")
import re
def anti_vowel(text):
print re.sub('[aeiou]', '', text)
anti_vowel(liz)
output:
Ttlly nt gng t httng th bg bng t th vnt