从字符串中删除所有元音并打印没有元音的新字符串

时间:2017-07-14 16:59:54

标签: python

目标是编写一个代码,删除用户输入的字符串中的所有元音;我的代码不打印没有元音的最终new_inp字符串。似乎new_inp = inp.replace(ch,“”)行没有做任何事情。任何人?谢谢。

inp="je m'en fou!"
vocals=['a','e','i','o','u']
for ch in inp.lower():
    if ch in vocals:
        new_inp=inp.replace(ch,"")
        print (new_inp)

5 个答案:

答案 0 :(得分:2)

你走了:

inp="je m'en fou!"
vocals=['a','e','i','o','u']
for ch in inp.lower():
    if ch in vocals:
        inp=inp.replace(ch,"")
        print (inp)

您使用原始字符串覆盖了循环的每次迭代,而不是累积更改。

答案 1 :(得分:1)

您需要在一个字符串中累积所有更新。您当前的方法仅替换初始字符串并丢弃下一次迭代中的先前更新:

new_inp = inp
for ch in inp.lower():
    if ch in vocals:
        new_inp = new_inp.replace(ch,"")
        print(new_inp)

您可以使用以下生成器表达式来过滤掉非元音项目:

new_inp = ''.join(x for x in inp if x not in vocals)

答案 2 :(得分:1)

您可以使用re模块。

import re
inp="je m'en fou!"
re.sub('[aeiou]', '', inp)

输出:

"j m'n f!"

答案 3 :(得分:0)

这是一种方法:

inp="je m'en fou!"
vocals='aeiou'

new_inp = ''.join(letter for letter in inp if letter not in vocals)
print(new_inp)  # j m'n f!

你的方法的问题是你在循环的每次迭代中都从原始字符串开始。

答案 4 :(得分:0)

覆盖inp变量。

inp="je m'en fou!"
vocals=['a','e','i','o','u']
for ch in inp.lower():
    if ch in vocals:
        inp=inp.replace(ch,'')
        print (inp)