2

文字列内の複数の文字を置き換えようとしています。母音をユーザー入力に置き換えたいのですが、現在のコードではすべての母音を同じ文字に置き換えていますが、母音を別のユーザー入力に置き換えたいと考えています。以下は、私が望むものの例と、その下のコードです。

私が欲しいもの

input1 = zz
input2 = xx
input3 = yolo

output = yzzlxx

私が持っているもの

input1 = zz
input2 = xx
input3 = yolo

output = yzzlzz

これが私のコードです。

def vwl():
    syl1 = input("Enter your first syllable: ")
    syl2 = input("Enter the second syllable: ")
    translate = input("Enter word to replace vowels in: ")

    for ch in ['a','e','i','o','u']:
        if ch in translate:
            translate=translate.replace(ch,syl1,)

    for ch in ['a','e','i','o','u']:
        if syl1 in translate:
            translate=translate.replace(ch,syl2,)

    print (translate)
4

2 に答える 2

3

正規表現を使用できます。

translate = re.sub('a|e|i|o|u',input1,translate,count=1)
translate = re.sub('a|e|i|o|u',input2,translate,count=1)

例:

>>> input1 = 'zz'
>>> input2 = 'xx'
>>> translate = 'yolo'
>>> import re
>>> translate = re.sub('a|e|i|o|u',input1,translate,count=1)
>>> translate
'yzzlo'
>>> translate = re.sub('a|e|i|o|u',input2,translate,count=1)
>>> translate
'yzzlxx'
于 2012-09-24T15:33:28.477 に答える
3

このメソッドreplaceは追加の引数を取りますcount:

translate=translate.replace(ch,syl1,1)
break # finish the for loop for syl1

ch の最初のインスタンスのみを置き換え、break は後続の母音をsyl1.

同様に:

translate=translate.replace(ch,syl2,1)
break # finish the for loop
于 2012-09-24T15:31:34.163 に答える