问题的背景是我想为电影列表创建一个搜索引擎。
movies_list=["Avatar", "Planet of the Apes", "Rise of the Apes", "Avatar the Second"]
所以我希望用户能够搜索,例如Apes
,程序将显示
Planet of the Apes
Rise of the Apes
我想要尝试的代码,但我知道不会有效
movieSearch = movies_list.split()
search = input(str("Search: ")
for movie in movies_list
if(movieSearch == search):
print(movie)
if(movieSearch != search):
print("No Match")
主要是因为我知道movieSearch
不起作用,但我不知道还能做什么
答案 0 :(得分:3)
尝试这种方式:
flag=0
search = str(input("Search: "))
for movie in movies_list:
if search in movie:
flag=1
print(movie)
if not flag:
print("no match")
Pythonic方式:
movies_list=["Avatar", "Planet of the Apes", "Rise of the Apes", "Avatar the Second"]
def match_movie(name):
return [movie for movie in movies_list if name in movie] or 'No Match'
答案 1 :(得分:2)
你可以简单地使用这样的东西:
>>> search = "Apes"
>>> [i for i in movies_list if search in i.split()]
['Planet of the Apes', 'Rise of the Apes']
请注意,这只会搜索确切的字词并且区分大小写。例如,如果search = "apes"
或search = "APES"
,则上述代码只会生成一个空列表。
要使其不区分大小写搜索,您可以使用.lower()
(或.upper()
将字符串转换为其中一个案例,然后进行比较。
# Convert the `movies_list` to lower case
>>> movies_list = [i.lower() for i in movies_list]
# Convert `search` to lower case and then compare
>>> [i for i in movies_list if search.lower() in i.split()]
编辑: i.split()
会提供准确的字词搜索结果。如果您想要部分搜索,只需使用i
。
[i for i in movies_list if search in i]
答案 2 :(得分:0)
您可以通过简单的步骤完成此操作。
In [21]: movies_list=["Avatar", "Planet of the Apes", "Rise of the Apes", "Avatar the Second"]
In [25]: search = 'Apes'
In [22]: [i for i in movies_list if search in i]
Out[22]: ['Planet of the Apes', 'Rise of the Apes']
答案 3 :(得分:0)
试试这个:
print('\n'.join(x for x in movies_list if search in x) or 'No results')