Строка заменяет гласные в Python?

Ожидаемое:

>>> removeVowels('apple') "ppl" >>> removeVowels('Apple') "ppl" >>> removeVowels('Banana') 'Bnn' 

Код (начинающий):

 def removeVowels(word): vowels = ('a', 'e', 'i', 'o', 'u') for c in word: if c in vowels: res = word.replace(c,"") return res 

Как и в нижнем регистре, и в верхнем регистре?

9 Solutions collect form web for “Строка заменяет гласные в Python?”

Вот версия, использующая список вместо генератора:

 def removeVowels(word): letters = [] # make an empty list to hold the non-vowels for char in word: # for each character in the word if char.lower() not in 'aeiou': # if the letter is not a vowel letters.append(char) # add it to the list of non-vowels return ''.join(letters) # join the list of non-vowels together into a string 

Вы также можете написать его так же, как

 ''.join(char for char in word if char.lower() not in 'aeiou') 

Что делает то же самое, за исключением того, что поиск негласных по одному за раз, поскольку join требует их для создания новой строки, вместо того, чтобы добавлять их в список, а затем присоединяться к ним в конце.

Если вы хотите ускорить его, то создание последовательности значений сделает поиск каждого символа быстрее, а буквы в верхнем регистре тоже означают, что вам не нужно преобразовывать каждый символ в нижний регистр.

 ''.join(char for char in word if char not in set('aeiouAEIOU')) 

Использование метода bytes.translate () :

 def removeVowels(word, vowels=b'aeiouAEIOU'): return word.translate(None, vowels) 

Пример:

 >>> removeVowels('apple') 'ppl' >>> removeVowels('Apple') 'ppl' >>> removeVowels('Banana') 'Bnn' 
 re.sub('[aeiou]', '', 'Banana', flags=re.I) 

Поскольку все остальные ответы полностью переписывают код, я полагал, что вам нужен один код, только слегка измененный. Кроме того, я сохранил это просто, так как вы новичок.

Замечание: поскольку вы переназначаете res для word в каждом цикле, вы получите только замену последнего гласного. Вместо этого замените гласные прямо в word

 def removeVowels(word): vowels = ('a', 'e', 'i', 'o', 'u') for c in word: if c.lower() in vowels: word = word.replace(c,"") return word 

Объяснение: Я просто изменил, if c in vowels: if c.lower() in vowels:

.lower() преобразует строку в нижний регистр. Поэтому он преобразует каждую букву в нижний регистр, затем проверяет письмо, чтобы увидеть, было ли оно в кортеже гласных, а затем заменило его, если это было.

Другие ответы хороши, поэтому вы должны проверить методы, которые они используют, если вы еще не знаете их.

Надеюсь это поможет!

Решение @katrielalex также может быть упрощено в выражении генератора:

 def removeVowels(word): VOWELS = ('a', 'e', 'i', 'o', 'u') return ''.join(X for X in word if X.lower() not in VOWELS) 
 def _filterVowels(word): for char in word: if char.lower() not in 'aeiou': yield char def removeVowels(word): return "".join(_filterVowels(word)) 

как насчет этого:

 import re def removeVowels(word): return re.sub("[aeiouAEIOU]", "", word) 
 def removeVowels(word): vowels='aeiou' Vowels='AEIOU' newWord='' for letter in word: if letter in vowels or letter in Vowels: cap=letter.replace(letter,'') else: cap=letter newWord+=cap return newWord 

Здесь у вас есть еще одна простая и простая в использовании функция, не нужно использовать списки:

 def removeVowels(word): vowels = 'aeiouAEIOU' for vowel in vowels: word = word.replace(vowel, '') return word 
Interesting Posts

Python: проблемы с производительностью с помощью islice

Python PANDAS, измените одно значение на другое значение

Повреждение данных: где ошибка?

Могу ли я писать собственный iPhone, Android, Windows, BlackBerry приложения с помощью Python?

Проблема с заменой параметра SQLite

Могу ли я расширить список в Python с помощью дополнительных элементов вместо добавления?

Недопустимый токен при использовании октальных чисел

Python: импорт модуля, который импортирует модуль

Попытка настроить колбу с помощью mod_wsgi

hashlib.md5 () TypeError: Unicode-объекты должны быть закодированы перед хешированием

Unpicking данные маринованные в Python 2.5, в Python 3.1, затем разжатие с zlib

python – возможно ли расширить набор вещей, которые могут быть сериализованы xml-rpc?

Пример формы электронной почты Python Django

Surf отсутствует в opencv 2.4 для python

Как может быть отказано в python 2 doctest и все же не имеет никакого значения в значениях в сообщении об ошибке?

Python - лучший язык программирования в мире.