学习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)
答案 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)