如何从字符串中删除元音

时间:2014-08-15 18:57:20

标签: python list function

我正在尝试使用传递名为“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

4 个答案:

答案 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

这简单地遍历元音并替换每个元音的所有出现。