python remove()函数不起作用

时间:2015-06-24 07:20:04

标签: python python-3.4

学习Python,由于某种原因,我无法使用python remove函数。它适用于我在控制台中以Python交互式测试它,但在我编写脚本时却没有。请帮帮我!它将输入转换为列表但不删除元音。

print("\nVowel Removal")
print("Enter a word to have the vowel removed.")
word_input = input("> ")
word_input = list(word_input)

vowels = list('aeiou')
output = []

while True:
    try:
        word_input.remove(vowels)
    except:
        print("You must enter a word.")
        break

print(word_input)

1 个答案:

答案 0 :(得分:2)

你有:

word_input = list(word_input)

所以word_input是一个字符串列表(特别是字符)。 vowels是:

vowels = list('aeiou')

即。另一个字符串列表。

你这样做:

word_input.remove(vowels)

始终失败,因为vowels是字符串列表而word_input只包含字符串。 remove删除单个元素。它删除参数中包含的所有元素。 请参阅错误消息:

In [1]: vowels = list('aeiou')

In [2]: vowels.remove(vowels)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-6dd10b35de83> in <module>()
----> 1 vowels.remove(vowels)

ValueError: list.remove(x): x not in list

请注意:list.remove(x): x not in list所以remove的参数应该是列表的元素,而不是要删除的元素列表。

你必须这样做:

for vowel in vowels:
    word_input.remove(vowel)

删除所有元音。此外remove仅删除元素的第一个,因此您可能需要重复调​​用remove以删除所有元音。

注意:要从字符串中删除元音,只需使用:

the_string.translate(dict.fromkeys(map(ord, vowels)))

如:

In [1]: the_string = 'Here is some text with vowels'
   ...: vowels = 'aeiou'
   ...: 

In [2]: the_string.translate(dict.fromkeys(map(ord, vowels)))
Out[2]: 'Hr s sm txt wth vwls'

或者如果您想使用这些列表:

result = []
# vowels = set('aeiou') may be faster than using a list
for char in word_input:
    if char not in vowels:
        result.append(char)