Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中删除字符串中的元音:_Python_String_List - Fatal编程技术网

在python中删除字符串中的元音:

在python中删除字符串中的元音:,python,string,list,Python,String,List,守则: def anti_vowel(text): string1 = list(text) for i in string1: if i=='A'or i=='a' or i=='E'or i=='e'or i=='O'or i=='o' or \ i=='I'or i=='i' or i=='U' or i=='u': del(string1[string1.index(i)]) string2 = ''.joi

守则:

def anti_vowel(text):
    string1 = list(text)
    for i in string1:
        if i=='A'or i=='a' or i=='E'or i=='e'or i=='O'or i=='o' or \
        i=='I'or i=='i' or i=='U' or i=='u':
            del(string1[string1.index(i)])
    string2 = ''.join(string1)
    return string2
给出一个错误:

您的函数在反_元音(“Hey look Words!”)上失败

当它应该返回“Hy lk Wrds!”时,它返回“Hy lk Words!”


我不知道如何删除“words”中的“o”。你能告诉我出了什么问题吗?

你的代码乱七八糟,你可以通过设置元音并将它们与下面的值进行比较,这样做很简单。然后将替换字符串中匹配的元音

 def anti_vowel(text):
        string1 = text
        vowels = ('a', 'e', 'i', 'o', 'u')
        for x in text.lower():
            if x in vowels:
                string1 = string1.replace(x,"")

        return string1

您的代码凌乱且不好,您可以通过设置元音并将其与下面的值进行比较来轻松完成。然后将替换字符串中匹配的元音

 def anti_vowel(text):
        string1 = text
        vowels = ('a', 'e', 'i', 'o', 'u')
        for x in text.lower():
            if x in vowels:
                string1 = string1.replace(x,"")

        return string1

这看起来是一个使用正则表达式的好地方

import re
re_vowels = re.compile(r'[AaEeIiOoUu]')
def anti_vowel(text):
    return re_vowels.sub('', text)
结果在
“hy lk Wrds!”

但是如果你必须修复你的代码,试试这个

def anti_vowel(text):
    string1 = list(text)
    for c in xrange(len(string1)-1,-1,-1):
        i = string1[c]
        if i=='A'or i=='a' or i=='E'or i=='e'or i=='O'or i=='o' or \
        i=='I'or i=='i' or i=='U' or i=='u':
            del(string1[c])
    string2 = ''.join(string1)
    return string2
或者


在您的代码中,您试图删除一些不再存在的内容。如果要在删除元素时遍历列表,请按相反顺序遍历(或使用列表理解)。

这看起来是使用正则表达式的好地方

import re
re_vowels = re.compile(r'[AaEeIiOoUu]')
def anti_vowel(text):
    return re_vowels.sub('', text)
结果在
“hy lk Wrds!”

但是如果你必须修复你的代码,试试这个

def anti_vowel(text):
    string1 = list(text)
    for c in xrange(len(string1)-1,-1,-1):
        i = string1[c]
        if i=='A'or i=='a' or i=='E'or i=='e'or i=='O'or i=='o' or \
        i=='I'or i=='i' or i=='U' or i=='u':
            del(string1[c])
    string2 = ''.join(string1)
    return string2
或者


在您的代码中,您试图删除一些不再存在的内容。如果要在删除元素时遍历列表,请按相反顺序遍历(或使用列表理解)。

如果只想从字符串中删除元音,这是一种简单的方法:

word = "hello world"
w = filter(lambda x: x not in 'aeiouAEIOU', word)
print w
输出:

hll wrld

如果您只想从字符串中删除元音,这是一种简单的方法:

word = "hello world"
w = filter(lambda x: x not in 'aeiouAEIOU', word)
print w
输出:

hll wrld

我想挑战在于向他解释为什么他的代码不起作用。奥卡姆的剃刀会告诉OP他的代码不起作用,因为它太复杂了。使用更简单、更简洁的算法是他的解决方案。我想挑战在于向他解释为什么他的代码不工作。奥卡姆的剃刀会告诉OP他的代码不工作,因为它太复杂了。使用一个更简单、更简洁的算法是他的解决方案。基本上你是在尝试删除一些不再存在的东西。基本上你是在尝试删除一些不再存在的东西。很好的捕获-我正在尝试这个。。。让人惊讶的是del()的工作原理。很好的捕获-我正在尝试这个。。。del()的工作原理令人惊讶。