在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()的工作原理令人惊讶。