簡體   English   中英

如何使用python 3在每個元音后在字符串中添加一個字符

[英]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.

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