我正在使用以下代码。为什么我的函数的输出仍然包含数字值?

功能

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 comprehensionstr.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

09-25 17:30