我正在尝试使用传递名为“text”的参数的函数从字符串中删除所有元音。我不确定这是否是最有效的编码方式,但这是我能想到的。我不知道如何告诉函数检查“text”是否包含“元音”列表中的任何字符,如果是,则删除它。我认为在.replace()函数中用空格替换它会做到这一点,但显然不是。该代码应该删除低和大写元音,所以我不确定是否将它们全部小写甚至可以接受。提前谢谢。
def anti_vowel(text): #Function Definition
vowels = ['a','e','i','o','u'] #Letters to filter out
text = text.lower() #Convert string to lower case
for char in range(0,len(text)):
if char == vowels[0,4]:
text = text.replace(char,"")
else:
return text
答案 0 :(得分:6)
使用str.translate()(https://docs.python.org/2.7/library/stdtypes.html#str.translate)
非常简单return text.translate(None, 'aeiouAEIOU')
答案 1 :(得分:0)
Python的替换是指定要替换的子字符串,而不是字符串中的位置。你想要做的是
for char in range(0,5):
text = text.replace(vowels[char],"")
return text
基于评论更新: 或者你可以做到
for char in vowels:
text = text.replace(char,"");
return text;
答案 2 :(得分:0)
使用sub()
功能(https://docs.python.org/2/library/re.html#re.sub):
re.sub('[aeiou]', '', text)
答案 3 :(得分:0)
将您的函数更改为循环元音列表,如下所示:
def anti_vowel(text): #Function Definition
vowels = ['a','e','i','o','u'] #Letters to filter out
text = text.lower() #Convert string to lower case
for vowel in vowels:
text = text.replace(vowel,"")
return text
这简单地遍历元音并替换每个元音的所有出现。