我写了这段代码来检测并打印每个元音后的第一个字母。它的工作原理除非我输入一个带有两个连续元音的单词。它忽略了第二个元音。例如,如果我输入“学年”'结果应该是:
o
l
a
r
但我只能
o
a
那么我做错了什么?我对python很新,我还在学习。
def find_after_vowel(word):
for match in re.findall(r"[ouieaOUIEA](\w{1}|\s)", word):
print (match)
答案 0 :(得分:3)
您可以使用finditer
和生成的匹配对象的start
方法查找每个匹配的索引,然后使用它来获取每个元音之后的字母:
import re
def find_after_vowel(word):
for match in re.finditer(r"[ouieaOUIEA]", word):
print word[match.start()+1]
find_after_vowel("school year")
将输出:
o
l
a
r
如果您希望它返回列表而不是打印结果,请使用:
import re
def find_after_vowel(word):
after_vowels = []
for match in re.finditer(r"[ouieaOUIEA]", word):
after_vowels.append(word[match.start()+1])
return after_vowels
after_vowels = find_after_vowel("school year")
print after_vowels
将输出:
['o', 'l', 'a', 'r']
答案 1 :(得分:0)
尝试以下正则表达式:[ouieaOUIEA]([^ouieaOUIEA]|\s)
答案 2 :(得分:0)
如果我理解你,你可以试试这个:
import re
def find_after_vowel(word):
index = re.search(r'[ouieaOUIEA]', word).span()[0] + 1
return word[index]
print(find_after_vowel('test')) # s
print(find_after_vowel('abc')) # b
print(find_after_vowel('def')) # f
print(find_after_vowel('abcdef')) # b