试图从字符串中删除元音失败

时间:2014-09-09 11:56:14

标签: python python-3.x

这段代码有什么问题?目的是检查输入的字符串是否包含元音并删除它们

以下是代码:

def anti_vowel(text):
    text = str(text)
    vowel = "aeiouAEIOU"
    for i in text:
        for i in vowel.lower():
            text = text.replace('i',' ')
        for i in vowel.upper():
            text = text.replace('i',' ')
    return text

这是关于Codecademy的课程

1 个答案:

答案 0 :(得分:3)

您正尝试将字符串替换为值 'i',而不是变量i的内容。

您的代码效率也很低;你不需要遍历text中的每个角色; vowel上的循环就足够了。因为您已经包含大写和小写版本,所以在小写和大写版本上的两个循环实质上是检查每个元音 4次

以下就足够了:

def anti_vowel(text):
    text = str(text)
    vowel = "aeiouAEIOU"
    for i in vowel:
        text = text.replace(i,' ')
    return text

您也在用空格替换元音,而不仅仅是删除它们。

删除(而不是替换)所有元音的最快方法是使用str.translate()

def anti_vowel(text):
    return text.translate(text.maketrans('', '', 'aeiouAEIOU'))

str.maketrans() static method生成一个映射,该映射将删除第三个参数中命名的所有字符。