盤點兩種方法來判斷一個列表里面,按關鍵詞進行篩選,留下包含有關鍵詞的論文題目
大家好,我是Python進階者。
前言
前幾天才哥群里有個粉絲提問,忘記是誰了,過去有段時間,當時沒來得及截圖,不知道誰問的了,不過題目當時記下來了,如下圖所示。
看上去并不是很難的樣子,這個示例代碼,看上去邏輯什么的也沒有問題,但是結果輸出就是有些不對。究其原因,因為title里邊是列表,而不是字符串,需要再多加一層提取就好了。
一、解決方法
這里提供兩個方法,供大家學習參考,當然也肯定有其他的方法,歡迎大家積極嘗試。
方法一:常規讀取
這個方法和示例代碼中的邏輯相似,只不過針對列表多取了一次,得到了列表里邊的具體的元素,結果就出來了。
- # -*- coding: utf-8 -*-
- # 方法一
- keywordlist = ['python', '應用']
- title = [['人生苦短,我應用python'], ['Rick Xiang 666'], ['歪歪nb'], ['為才哥打call'], ['網絡爬蟲的應用']]
- for luwen in title:
- if keywordlist[0] in luwen[0] and keywordlist[1] in luwen[0]:
- print(luwen)
運行后,代碼結果如下:
方法二:使用operator庫
這個方法是才哥還是誰提供的,也是可以滿足要求的。
- # -*- coding: utf-8 -*-
- import operator
- keywordlist = ['python', '應用']
- title = [['人生苦短,我應用python'], ['Rick Xiang 666'], ['歪歪nb'], ['為才哥打call'], ['網絡爬蟲的應用'], ['python爬蟲與數據挖掘']]
- for luwen in title:
- if operator.contains(luwen[0], keywordlist[0]) and operator.contains(luwen[0], keywordlist[1]):
- print(luwen)
運行之后,結果如下圖所示:
可能有的小伙伴會問了,題目要求包含關鍵詞的就留下,否則就從列表中刪除,我這里確實沒有做這個操作,我倒是覺得把得到的值返回出來,直接拿到手里,至于后續處理,就不得而知了。如果你真感興趣,這里也提供一個思路,可以將得到的結果去列表中對應的找索引值,將找到的索引存起來,然后針對沒有找到的索引進行刪除即可。
三、總結
我是Python進階者。本文基于粉絲提問,針對列表的關鍵詞包含問題,給出了兩種解決方法,順利幫助粉絲解決了問題。雖然文中例舉了兩種方法,但是小編相信肯定還有其他的方法的.