如何拆分列表中的多个字符串?

时间:2016-04-25 09:52:13

标签: python

问题的背景是我想为电影列表创建一个搜索引擎。

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不起作用,但我不知道还能做什么

4 个答案:

答案 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')