我正在使用以下代码。为什么我的函数的输出仍然包含数字值?
功能
def removeNonAplhabet(inputlist):
for w in inputlist:
if ((w.isalnum()==True) or ( (w.isdigit()==True))):
inputlist.remove(w);
return inputlist;
主程序
filtered_words=removeNonAplhabet(word_list);
print ('Removing Non Alphabetical Characters')
print (filtered_words)
输出量
['13', '1999', '2001', '280', 'amazon', 'another', 'april']
最佳答案
迭代序列时删除项目确实可以按预期工作。制作副本,然后迭代该副本。
或使用list comprehension和str.isalpha
:
>>> def removeNonAplhabet(inputlist):
... return [w for w in inputlist if w.isalpha()]
...
>>> removeNonAplhabet(['13', '1999', '2001', '280', 'amazon', 'another', 'april'])
['amazon', 'another', 'april']
顺便说一句,
str.isalnum
对于仅包含字母的单词将返回True。>>> 'abc'.isalnum()
True
>>> '123'.isalnum()
True
>>> 'a,b'.isalnum()
False