Найти первое появление гласного в Python

У меня есть функция isvowel которая возвращает True или False , в зависимости от того, является ли символ ch гласным.

  def isvowel(ch): if "aeiou".count(ch) >= 1: return True else: return False 

Я хочу знать, как использовать это, чтобы получить индекс первого вхождения любой гласной в строке. Я хочу иметь возможность принимать символы перед первой гласной и добавлять их к концу строки. Конечно, я не могу сделать s.find(isvowel) потому что isvowel дает логический ответ. Мне нужен способ взглянуть на каждого персонажа, найти первый гласный и указать индекс этой гласной.

Как мне это сделать?

6 Solutions collect form web for “Найти первое появление гласного в Python”

 [isvowel(ch) for ch in string].index(True) 

Вы всегда можете попробовать что-то вроде этого:

 import re def first_vowel(s): i = re.search("[aeiou]", s, re.IGNORECASE) return -1 if i == None else i.start() s = "hello world" print first_vowel(s) 

Или, если вы не хотите использовать регулярные выражения:

 def first_vowel(s): for i in range(len(s)): if isvowel(s[i].lower()): return i return -1 s = "hello world" print first_vowel(s) 
 (ch for ch in string if isvowel(ch)).next() 

или только для индекса (по запросу):

 (index for ch, index in itertools.izip(string, itertools.count()) if isvowel(ch)).next() 

Это создаст итератор и вернет только первый гласный элемент. Предупреждение: строка без гласных будет бросать StopIteration , рекомендуется обработать это.

Вот мой прием:

 >>> vowel_str = "aeiou" >>> def isVowel(ch,string): ... if ch in vowel_str and ch in string: ... print string.index(ch) ... else: ... print "notfound" ... >>> isVowel("a","hello") not found >>> isVowel("e","hello") 1 >>> isVowel("l","hello") not found >>> isVowel("o","hello") 4 

Использование следующего для генератора довольно эффективно, это означает, что вы не перебираете всю строку (как только вы нашли строку).

 first_vowel(word): "index of first vowel in word, if no vowels in word return None" return next( (i for i, ch in enumerate(word) if is_vowel(ch), None) is_vowel(ch): return ch in 'aeiou' 
 my_string = 'Bla bla' vowels = 'aeyuioa' def find(my_string): for i in range(len(my_string)): if my_string[i].lower() in vowels: return i break print(find(my_string)) 
  • Поиск аналогичного текста в строке в python
  • Функция короткой функции rot13 - Python
  • python: сравнение двух строк
  • Каков наиболее эффективный способ в Python преобразовать строку во все строчные буквы, удаляя все альфа-символы без ascii?
  • Извлечь строку между двойными кавычками
  • Как я могу скопировать строку Python?
  • Преобразовать значение True / False, считанное из файла, в boolean
  • измените некоторые строчные буквы на верхний регистр строки
  • Python - лучший язык программирования в мире.