2017-05-17 47 views
1

對於那些不知道的元音,用'ooba'取代元音已成爲https://reddit.com/r/prequelmemes的流行趨勢。我想通過使用python 2.7來替代元音的'ooba'來實現這個過程的自動化。我不知道從哪裏開始用字符串替換元音的翻譯器

+1

這聽起來很愚蠢,但你的要求很簡單:'new_word = ''。加入([ 'OOBA' 如果L在 'AEIOU' 別的l對於l在old_word ])' –

+3

@KevinK。你可以省略'[]',即。使用生成器表達式而不是列表理解。你應該發佈這個答案。另外我(和pep8)建議不要使用'l'作爲變量名 –

+0

如果這個詞是'queue',那麼程序應該輸出'qooba',還是你真的想輸出'qoobaobaoobaooba'? –

回答

0

對於一個快速和簡單的答案,你可以養活串meme到這裏

for i, c in enumerate(meme): 
    if c in ['a', 'e', 'i', 'o', 'u']: 
    meme[:i] = meme[:i] + 'ooba' + meme[i+1:] 

它越過每個字符串中的字符,並檢查它是否是元音。如果是這樣,它會在索引周圍切片並在原來的位置插入「ooba」。

+1

感謝您使用此代碼段,這可能會提供一些即時幫助。通過展示*爲什麼*這是一個很好的解決方案,對未來的讀者會有更好的解決方案,這將爲它的教育價值提供一個合適的解釋[//大大提高](// meta.stackexchange.com/q/114762)但不完全相同的問題。請編輯您的答案以添加解釋,並指出適用的限制和假設。 –

1

你可以使用一個簡單的正則表達式:如果線路短,建議

import re 

my_string = 'Hello!' 
my_other_string = re.sub(r'[aeiou]', 'ooba', my_string) 

print(my_other_string) # Hooballooba! 
1

下面的方法。否則,我寧願使用正則表達式。以下假設您的文字是s

s = ''.join(['ooba' if i in ['a', 'e', 'i', 'o', 'u'] else i for i in s]) 

正則表達式的方法:

import re 
s = re.sub(r'a|e|i|o|u', "ooba", s)