为了账号安全,请及时绑定邮箱和手机立即绑定

Python 在列表中搜索多个单词

Python 在列表中搜索多个单词

呼如林 2021-11-16 10:49:56
我有这样的 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)但它只在我输入一个关键字时才有效,而不是像我上面给出的示例那样输入多个关键字。那么,如何做到这一点..?
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

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)


查看完整回答
反对 回复 2021-11-16
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

你可以试试这个


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


查看完整回答
反对 回复 2021-11-16
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

您可以使用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]

两者都做同样的事情并给出这样的输出


['销售员'、'销售经理'、'学校老师'、'数学老师']


祝你好运!


查看完整回答
反对 回复 2021-11-16
  • 3 回答
  • 0 关注
  • 328 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信