搜索子字符串是否在列表中,以及查找列表中每个出现的索引

时间:2018-11-28 01:16:30

标签: python python-3.x

试图制作一个简单的搜索引擎,以按参数(搜索)中列出的术语搜索参数(列表1)中给出的列表。我已将列表和搜索词更改为小写,并且已识别出匹配项。但是我似乎无法获取每个实例的索引

def search_results(list1,search):
    list2lower = [element.lower() for element in list1]
    searchlower = search.lower()
    newlist = []

    for text in list2lower:
        if search.lower() in text:
            item = list2lower.index(search)
            newlist.append(list1[item])
    print(newlist)

2 个答案:

答案 0 :(得分:0)

您需要使用search的小写版本。代替

item = list2lower.index(search)

使用:

item = list2lower.index(searchlower)

这是重写的代码:

def search_results(list1, search):
    list2lower = [element.lower() for element in list1]
    searchlower = search.lower()
    newlist = []

    for text in list2lower:
        if searchlower in text:
            item = list2lower.index(searchlower )
            newlist.append(list1[item])
    print(newlist)

答案 1 :(得分:0)

弄清楚了。我敢肯定,可以做很多比这更清洁的方法,但是它可以满足我的需要。随时查看https://repl.it/@tyrantosaurusex/Project-4

上wtf的整个集群
def search_results(list1,search):
    list2lower = [element.lower() for element in list1]
    searchlower = search.lower()
    item = [i for i,s in enumerate(list2lower) if searchlower 
    in s]
    result = any(searchlower in word for word in list2lower)

    while len(search) > 0:
        while result is True:
            for sam in item:
                print(list1[sam])

            list2lower = [element.lower() for element in 
            list1]
            search = input('Enter search query (blank to 
            exit): ')
            searchlower = search.lower()
            item = [i for i, s in enumerate(list2lower) if 
            searchlower in s]
            result = any(searchlower in word for word in 
            list2lower)
            if len(search) == 0:
                break

list_of_items = ['Keanu', 'Stamos', 'Goldblum', 'Gosling']

search_results(list_of_items,'a')