用“oodle”替换字符串中的元音而不替换“oodle”中的元音

时间:2016-10-27 22:29:54

标签: python

到目前为止,这是我的代码。

line = input("Enter a sentence:\n")
for i in range(0,len(line)):
     line = line.replace('a', 'oodle')
     line = line.replace('e', 'oodle')
     line = line.replace('i', 'oodle')
     line = line.replace('o', 'oodle')
     line = line.replace('u', 'oodle')
print(line)

然而,在替换它们之后,它取代了“oodle”一词中的o和e。我怎么能不成功呢?

3 个答案:

答案 0 :(得分:2)

使用re.sub

>>> re.sub(r'[aeiou]', 'ooddle', "test")
'tooddlest'

re.sub一次替换字符串,因此您不会两次替换相同的字符串。

答案 1 :(得分:1)

这将打印' oodle'如果它是一个元音,否则它只会保留辅音:

>>>line='hello'
>>>''.join(['oodle' if i in 'aeiou' else i for i in line])
'hoodlelloodle'

如果你想保留元音并附加' oodle'对它来说,它看起来像:

>>>''.join([i+'oodle' if i in 'aeiou' else i for i in line])
'heoodlellooodle'

答案 2 :(得分:0)

如果出于某种原因,您无法使用re模块:

def replace_vowels(string_input, replacement):
    return_string = ""
    vowels = ('a', 'e', 'i', 'o', 'u')
    last_vowel = 0
    for i in xrange(0, len(string_input)):
        if string_input[i] in vowels:
            return_string += string_input[last_vowel:i] + replacement
            last_vowel = i + 1
    return return_string

# In [2]: replace_vowels('hello', 'oogle')
# Out[2]: 'hooglelloogle'