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

该方法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 回答
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 回答