Python 删除字符串中出现的元音

Python 删除字符串中出现的元音,python,string,algorithm,Python,String,Algorithm,我正试图制作一个程序,删除一个字符串中的所有元音,但由于某种原因,它无法工作。这是我在Python3中的代码 s = list(input()) vowels = ["A", "E", "I", "O", "U", "Y", "a", "e", "i", "o", "u", &

我正试图制作一个程序,删除一个字符串中的所有元音,但由于某种原因,它无法工作。这是我在Python3中的代码

s = list(input())

vowels = ["A", "E", "I", "O", "U", "Y", "a", "e", "i", "o", "u", "y"]

for i in s:
    if i in vowels:
        s.remove(i)
除了两个元音彼此相邻时,代码可以工作,因为它跳过并重复。
如果你们中有人对我如何解决这个小问题有任何想法,请告诉我,谢谢

使用列表理解和加入

s = 'Hello world!'
vowels = 'AEIOUYaeiouy'
print(''.join([l for l in s if l not in vowels]))

>>> Hll wrld!
使用
re

import re

s = input()
vowels = ["A", "E", "I", "O", "U", "Y", "a", "e", "i", "o", "u", "y"]

print(re.sub('|'.join(vowels), '', s)

以下是您可以做的:

s = input()

vowels = ["A", "E", "I", "O", "U", "Y", "a", "e", "i", "o", "u", "y"]

s = ''.join([i for i in s if i not in vowels])

这使用正则表达式来解决您的问题

import re

s = input()
results = re.sub(r'[AEIOUYaeiouy]', '', s)
re.sub()
的语法是:

re.sub(正则表达式模式、替换、输入字符串)

该方法返回一个字符串,其中 匹配的匹配项将替换为
replacement
变量的内容

在这方面,经常被忽视的因素是极其迅速的。要仅删除字符,您可以仅使用的第三个参数构建翻译表。如果您处理的不仅仅是微小的文本,它可能比正则表达式更好:

removeVowels = str.maketrans("","",'AEIOUYaeiouy')
s = "Hello There"
s.translate(removeVowels)
#'Hll Thr'

s=s.remove(i)
?另外,不要在迭代时删除。最好使用列表理解或正则表达式。也要看到这一个肯定会赢。比任何竞争对手的答案快10倍以上。