-4

単語の最初の母音を見つけ、母音の最初の出現の前のすべての文字を削除し、最終的に単語の左側を返したいと思います。リストを使用してそれを行うことができると思いました。最初に単語の「a」を見つけ、「a」で区切られた最初の部分を取得し、次に「e」を見つけます.....しかし、通常の方法で単純化したい5 つの母音をすべて同時に見つけて、最初の母音のインデックスを取得できる方法があれば、次のステップを簡単に実行できると考えています。だから私はいくつかの助けが必要かもしれません。私は正規表現の初心者ですが、これについて誰か考えがありますか?

私は再び問題を抱えています。これは、@Martijin の提案に従って作成したコードです。

import re
def pigify():
    user_input=raw_input()
    sentence=re.sub(r'\b([aeiou])([a-z]*)\b',r'\1\2'+'hay',user_input,re.I)
    sentence1=re.sub(r'\b(qu)([a-z]*)\b',r'\2\1'+'ay',sentence,re.I)
    sentence2=re.sub(r'\b([^aeiou]*)(\w*)\b',r'\2\1'+'ay',sentence1,re.I)
    print sentence2
    return
pigify()

入力した場合:

quiet askhj a dhjsadf skdhyksj qdksdj y 

私は取得したい:

ietquay askhjhay ahay adfdhjsay yksjskdhay qdksdjay yay

しかし、今は最初の 2 つのステップを完了しただけです。1. 母音で始まる単語を見つけて、その末尾に「hay」を追加します。2.「qu」で始まる単語を見つけて、「qu」を最後に移動し、「ay」を追加します。3 番目のステップは、左の単語を見つけることです。すべての単語について、その中の最初の母音または 'y' ('y' が最初の文字でない場合) を見つけ、母音の前のすべての文字を末尾に移動し、'ay' を追加します。コードは次のように実行されます。

ietquayayaskhjhay ay ahay dhjsadf skdhyksj qdksdj y

re.sub は置換を使用してブロックを置き換えるため、 \b を正しい方法で使用しなかったと思います。それを正しくする方法は?ちなみに、「for」ループと「if|else」を使用して別のバージョンを作成しました。これがコードです。単純化する方法が必要だと思います。

def SieveWord(user_input):
    return user_input.split(' ')
def UpperToLower(user_input):
    return user_input.lower()

vowel=['a','e','i','o','u']                               
transform_input=UpperToLower(raw_input())            
input_list=SieveWord(transform_input)                
u=[]                                                 

for word in input_list:                              
    if len(word)!=1:                                 
        if word[0] in vowel:                         
            word+='h'                                
        else:
            if word[0]+word[1]=='qu':
                word=word[2:]+'qu'                   
            else:
                for letter in word:                 
                    if letter in vowel or (letter=='y' and word[0]!='y'):
                        position=word.index(letter)         
                        removepart=word[0:position]         
                        word=word[position:]+removepart     
                        break                                                    
    elif word in vowel:                              
        word+='h'                                    
    u.append(word+'ay')                              
for d in u:
    print d,    
4

1 に答える 1