Skip to main content
 首页 » 编程设计

python之str.replace 问题

2025年05月04日8zengkefu

我正在尝试让以下代码正常工作,它应该从用户输入的文本字符串中删除元音。

def isVowel(text): 
    if text in ("a", "e", "i", "o", "u", "A", "E", "I", "O", "U"): 
        return True 
 
def withoutVowels(text): 
    for char in text: 
        if(isVowel == True): 
            text = text.replace(char, "") 
    return text 

isVowel 函数工作正常,但是当我使用它时它似乎无法正确计算,这是为什么?

请您参考如下方法:

if (isVowel == True): 

应该是

if isVowel(char): 

isVowel 是一个函数对象。 isVowel == True 将始终为 False。


请注意,您也可以使用 str.translate 更快更简单地执行此操作.

In [90]: 'Abracadabra'.translate(None, 'aeiouAEIOU') 
Out[90]: 'brcdbr' 

或者,(如 EOL 指出的那样)使用正则表达式:

In [93]: import re 
In [95]: re.sub(r'(?i)[aeiou]', '', 'Abracadabra') 
Out[95]: 'brcdbr' 

但是,str.translate 在这种情况下更快:

In [94]: %timeit 'Abracadabra'.translate(None, 'aeiouAEIOU') 
1000000 loops, best of 3: 316 ns per loop 
In [96]: %timeit re.sub(r'(?i)[aeiou]', '', 'Abracadabra') 
100000 loops, best of 3: 2.26 us per loop