我试图使用这一行代码过滤列表:
list_categories = list(filter(lambda x: ('Article' not in x) and ('Biographie/Articles liés/C' not in x) and ('article' not in x ) and ('Catégorie' not in x) and ('Biographie/Articles liés/C' not in x ) and ('wikipédia:' not in x) and ('Page' not in x) , l))
基本上,我想删除任何包含文章(S)、/Article(S)或页面/页面或维基百科/维基百科(Wikipédia)的元素。
list_categories中的代码:l是一个包含维基百科文章所有类别的列表,因此我试图删除列表中包含单词Article/article/Articles/articles/wikipédia/wikipedia/Page/page的元素。
是否可以更优雅地编写这一行代码?
发布于 2022-11-02 18:35:07
不要强制使用lambda
,而要使用all
。str.casefold
用于不区分大小写的比较.
STOP_WORDS = ['article'.casefold(), 'biographie/articles liés/c'.casefold(),
'catégorie'.casefold(), 'wikipédia:'.casefold(), 'page'.casefold()]
def filterer(s):
s = s.casefold()
return all(stop_word not in s for stop_word in STOP_WORDS)
list_categories = list(filter(filterer, l))
https://stackoverflow.com/questions/74294092
复制相似问题