簡體   English   中英

如何在一個句子中的每個元音后檢測並打印第一個字母?

[英]How to detect and print first letter after each vowel in a sentence?

我寫了這段代碼來檢測和打印每個元音后的第一個字母。 它的工作原理除非我輸入一個帶有兩個連續元音的單詞。 它忽略了第二個元音。 例如,如果我輸入“學年”,結果應為:

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)

您可以使用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']

試試以下正則表達式: [ouieaOUIEA]([^ouieaOUIEA]|\\s)

如果我理解你,你可以試試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM