Python在列表中搜索多个单词

Python在列表中搜索多个单词,python,arrays,python-3.x,Python,Arrays,Python 3.x,我有这样的Python列表: ['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher'] job_list = ['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteac

我有这样的Python列表:

['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']
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)
x = [y for y in lis for string in str1 if y.find(string) != -1]
现在我想在我的列表中搜索多个关键字,例如:

当我尝试输入关键字教师销售

input keywords: teacher sales
它应该返回如下结果:

['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']
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)
x = [y for y in lis for string in str1 if y.find(string) != -1]
  • 教师
  • 数学教师
  • 售货员
  • 销售经理
到目前为止,我已经编写了如下代码:

['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']
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)
x = [y for y in lis for string in str1 if y.find(string) != -1]
但它只在我输入一个关键字时起作用,而不是像我上面给出的例子那样输入多个关键字

那么,如何做到这一点呢?

您可以使用该方法。这应该适合您:

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)
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)
上面的代码是为了可读性和可理解性。但是,可以使用如下列表理解将其压缩成一行:

['assistant manager', 'salesperson', 'doctor', 'production manager', 'sales manager', 'schoolteacher', 'mathematics teacher']
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)
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

相当多的问题:1
input()
给你一个字符串,你应该把输入的搜索词拆分成一个列表。2.
search\u multiple\u words()
中的前两行似乎没有任何意义