预期:
>>> removeVowels('apple')
"ppl"
>>> removeVowels('Apple')
"ppl"
>>> removeVowels('Banana')
'Bnn'
代码(初学者):
def removeVowels(word):
vowels = ('a', 'e', 'i', 'o', 'u')
for c in word:
if c in vowels:
res = word.replace(c,"")
return res
我如何同时使用小写和大写?
答案 0 :(得分:6)
使用bytes.translate()方法:
def removeVowels(word, vowels=b'aeiouAEIOU'):
return word.translate(None, vowels)
示例:
>>> removeVowels('apple')
'ppl'
>>> removeVowels('Apple')
'ppl'
>>> removeVowels('Banana')
'Bnn'
答案 1 :(得分:5)
这是使用列表而不是生成器的版本:
def removeVowels(word):
letters = [] # make an empty list to hold the non-vowels
for char in word: # for each character in the word
if char.lower() not in 'aeiou': # if the letter is not a vowel
letters.append(char) # add it to the list of non-vowels
return ''.join(letters) # join the list of non-vowels together into a string
您也可以将其编写为
''.join(char for char in word if char.lower() not in 'aeiou')
同样的事情,除了join
一次找到一个非元音需要他们创建新字符串,而不是将它们添加到列表然后在最后加入它们。
如果你想加快速度,将值字符串set
设置为更快地查找其中的每个字符,并且使用大写字母也意味着您不必将每个字符转换为小写
''.join(char for char in word if char not in set('aeiouAEIOU'))
答案 2 :(得分:4)
re.sub('[aeiou]', '', 'Banana', flags=re.I)
答案 3 :(得分:3)
@katrielalex解决方案也可以简化为生成器表达式:
def removeVowels(word):
VOWELS = ('a', 'e', 'i', 'o', 'u')
return ''.join(X for X in word if X.lower() not in VOWELS)
答案 4 :(得分:2)
由于所有其他答案都完全重写了代码,我认为你想要一个代码,只需稍加修改。另外,我保持简单,因为你是初学者。
附注:因为您在每个for循环中将res
重新分配给word
,所以您只会替换最后一个元音。而是直接在word
def removeVowels(word):
vowels = ('a', 'e', 'i', 'o', 'u')
for c in word:
if c.lower() in vowels:
word = word.replace(c,"")
return word
说明:我刚刚将if c in vowels:
更改为if c.lower() in vowels:
.lower()
将字符串转换为小写。因此它将每个字母转换为小写,然后检查字母以查看它是否在元音元组中,然后如果它是替换它。
其他答案都很好,所以如果你还不知道,你应该查看他们使用的方法。
希望这有帮助!
答案 5 :(得分:2)
这里有另一个简单易用的功能,无需使用列表:
def removeVowels(word):
vowels = 'aeiouAEIOU'
for vowel in vowels:
word = word.replace(vowel, '')
return word
答案 6 :(得分:0)
def _filterVowels(word):
for char in word:
if char.lower() not in 'aeiou':
yield char
def removeVowels(word):
return "".join(_filterVowels(word))
答案 7 :(得分:0)
怎么样:
import re
def removeVowels(word):
return re.sub("[aeiouAEIOU]", "", word)
答案 8 :(得分:0)
def removeVowels(word):
vowels='aeiou'
Vowels='AEIOU'
newWord=''
for letter in word:
if letter in vowels or letter in Vowels:
cap=letter.replace(letter,'')
else: cap=letter
newWord+=cap
return newWord