Строка заменяет гласные в 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 

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

  • Как определить ленивую переменную в Python, которая повысит NotImplementedError для абстрактного скелета кода?
  • Имеет ли значение порядка импорта Python
  • Python: выбор конкретного исключения
  • Что делает печать пустой строки?
  • Как продлить, имитировать или эмулировать функцию диапазона?
  • Как подделать / проксировать класс в Python
  • Запросы Python - управление файлами cookie
  • передача переменных в шаблон при перенаправлении в python
  • 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

    Разное поведение в сценарии python и python простаивает?

    Проблемы с OpenGL-модулем PyQt5 и управление версиями (вызывает неправильные _QOpenGLFunctions_ (ver))

    Как проверить, является ли элемент списка списком (в Python)?

    Matplotlib Bar Chart выбирает цвет, если значение положительное, а значение отрицательное

    получение только заголовка веб-страницы в python

    Построение границы решения, разделяющей 2 класса, используя пипот Матплотлиба

    Приложение Google App Engine чрезвычайно медленно

    Почему при преобразовании списка в набор и обратно я получаю нечеткий тип «list»

    Вывод класса из TestCase вызывает две ошибки

    проблема компиляции libjingle

    Попытка относительного импорта в непакете (после 2to3)

    Объединение неперекрывающихся блоков массивов

    Построение эллипсоида с помощью Matplotlib

    Как найти список в списке списков, сумма элементов которых наибольшая?

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