[英]How to add a character in a string after each vowel using python 3
我正在嘗試編寫一個接收字符串(句子)的程序,並在每個元音之后添加一個字母,例如:“Jon”變成“Jofon”。 我認為用 for 循環做這件事也許(當然)有更好的方法。 這是我到目前為止嘗試過的:
sen="Jon"
newString=""
for letter in sen:
if letter == "a" or letter == "e" or letter == "i" or letter == "o" \
or letter == "u" or letter == "y":
newString+=letter+"f"+letter
print(newString)
它似乎只將字母“f”添加到元音中,而將輔音去掉,結果如下:
ofo
當然,因為當它不是元音時沒有后備......你需要一個else
:
for letter in sen:
if letter in "aeiouy":
newString+=letter+"f"+letter
else:
newString+=letter
(不處理字母大寫的情況 BTW)
但是有更有效的(和 pythonic 方式)這樣做。 連接字符串性能不佳,使用推導式或正則表達式可以更好地解決此類問題。
在一行中,使用三元和列表"".join
,傳遞給"".join
:
newstring = "".join(["{0}f{0}".format(letter) if letter.lower() in "aeiouy" else letter for letter in sen])
作為正則表達式的替代方案,將元音作為一個組捕獲並使用它兩次將f
字符與使用原始前綴的調用組 ( \\1
) 包裝起來,或者\\1
被解釋為 ASCII 字符\\x01
代替:
re.sub("([aeiouy])",r"\1f\1","Jon",flags=re.IGNORECASE)
找到一個元音,並再次用這個元音 + f
+ 這個元音替換它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.