簡體   English   中英

Python在列表中搜索多個單詞

[英]Python search multiple word in list

我有這樣的Python列表:

['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']

現在,我想在列表中搜索多個關鍵字,例如:

當我嘗試輸入關鍵字教師銷售時

input keywords: teacher sales

它應該返回如下結果:

  • 教師
  • 數學老師
  • 售貨員
  • 銷售經理

到目前為止,我已經編寫了如下代碼:

job_list = ['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']

def search_multiple_words(search_words):
    search_words = [search_words]

    for line in job_list:
        if any(word in line for word in search_words):
            print(line)

search_words = input("input keywords: ")
search_multiple_words(search_words)

但是它只在我輸入一個關鍵字而不是上面我給出的示例的多個關鍵字時才有效。

那么,該怎么做..?

job_list = ['assistant manager', 'salesperson', 'doctor', 'production manager',
            'sales manager', 'schoolteacher', 'mathematics teacher']


def search_multiple_words(search_words):
    search_words = search_words.split(' ')

    out = [s for s in job_list if any(xs in s for xs in search_words)]
    print(out)


search_words = input("input words: ")
search_multiple_words(search_words)

您可以使用find()方法。 這應該為您工作:

lis=['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']
str1 = ["teacher", "sales"]
x=[]
for y in lis:
    for string in str1:
        if y.find(string) != -1:
            x.append(y)

上面的代碼用於可讀性和可理解性 但是,可以使用以下列表推導將其壓縮為一個不錯的單行代碼:

x = [y for y in lis for string in str1 if y.find(string) != -1]

兩者都做同樣的事情,並給出這樣的輸出

[“銷售人員”,“銷售經理”,“學校老師”,“數學老師”]

祝好運!

正如Adrian Shum所說,您的輸入為您提供了一個字符串。 您需要先對其進行拆分,然后再將其提供給功能

job_list = ['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']

def search_multiple_words(search_words):
    # Not neecssary anymore as you're feeding a list
    # search_words = [search_words]

    for line in job_list:
        if any(word in line for word in search_words):
            print(line)

search_words = input("input keywords: ").strip().split()
search_multiple_words(search_words)

你可以試試這個

job_list = ['assistant manager', 'salesperson', 'doctor', 'production manager', 
            'sales manager', 'schoolteacher', 'mathematics teacher']

def search_multiple_words(search_words):
    search_words = [search_words]

    for line in job_list:
        if any(word in line for word in search_words):
            print(line)

search_words = input("input keywords: ").split(' ')
for w in search_words:
    search_multiple_words(w)

輸出:

input keywords: sales teacher
salesperson
sales manager
schoolteacher
mathematics teacher

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM