移除字符串中的元音功能在连续出现元音时无效

2024-10-03 09:17:40 发布

您现在位置:Python中文网/ 问答频道 /正文

def disemvowel(string):
    vowels = ('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')
    listString = list(string)
    for t in listString:
        if t in vowels:
            listString.remove(t)
    string = ''.join(listString)
    return string

函数应该删除所有元音,如果输入是:

^{pr2}$

正确的输出应该是:

'Ths wbst s fr lsrs LL!' 

但是当我改变输入,让元音字母连续出现的那一刻,也就是说

'This websitea is for loosers LOL!' 

输出变成

'Ths wbsta s fr losrs LL!' 

这是不正确的(请参见'wbsta''losrs')。在


Tags: inforstringifdeffrlistll
2条回答

从迭代对象中删除项通常不是一个好主意,因为这会在迭代过程中造成影响。因此,与其从字符串中删除元音的字符,不如将不是元音的字符添加到新字符串中。在

def disemvowel(string):
    vowels = ('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U')
    listString = list(string)
    string = ""
    for t in listString
        if t not in listString
            string += t

    return string

与其删除元音,不如直接从非元音字符中构造字符串呢?在

return ''.join([c for c in string if c not in vowels])

相关问题 更多 >