从字符串python中删除元音

Removing vowels from the string python

本问题已经有最佳答案,请猛点这里访问。

我期望下面代码中没有元音的字符串,但它没有给出我所期望的。请帮忙。

1
2
3
4
5
6
7
8
9
10
def disemvowel(word):
    words = list(word)
    for i in words:
        if i.upper() =="A" or i.upper() =="E" or i.upper() =="I" or i.upper() =="O" or i.upper() =="U":
            words.remove(i)


    return print(''.join(words))

disemvowel("uURII")

我本来以为输出是"r",但我得到的是"uri"。


不要在我的remove在线呼叫列表迭代过它。P></

当你认为它能做什么。P></

  • 第一,words = 'uURII'iis at its指指点点,和第一个字。
  • words.remove(i)呼叫。现在words = 'URII'iis at its指指点点,和第一个字。
  • the next time一环,words = 'URII'is to its指指点点,和i二字。哎呀,你错过U茶!

there are to fix一些方式-你可以在这个迭代过copy of the list,你可以索引或EN instead of the start from the端,你可以在使用前和使while指数在环增量(not to found something直到你删除你不想要的,等等。P></

but is to just the扩路集结在列表:P></

1
2
3
4
5
6
7
8
9
def disemvowel(word):
    words = list(word)
    new_letters = []
    for i in words:
        if i.upper() =="A" or i.upper() =="E" or i.upper() =="I" or i.upper() =="O" or i.upper() =="U":
            pass
        else:
            new_letters.append(i)
    print(''.join(new_letters))

这周你需要list(word)均值不在第一的地方;你可以只是迭代过原始的字符串。P></

你在这可以简化一些其他方式使用instead of a集会员检查检查==五分开,把茶叶在茶比较,跟踪和辊环进入列表理解(或发电机expression):P></

1
2
3
4
def disemvowel(word):
    vowels = set('AEIOU')
    new_letters = [letter for letter in word if letter.upper() not in vowels]
    print(''.join(new_letters))

…but is the same the Basic的想法。P></


this should help。P></

1
2
3
4
5
def disemvowel(word):
    words = list(word)
    v = ["a","e","i","o","u"]     #list of vowel
    return"".join([i for i in words if i.lower() not in v])  #check if alphabet not in vowel list
print disemvowel("uURII")

输出:P></

1
R