Python:startswith()无法正常工作

时间:2015-04-03 21:04:42

标签: python string list

我正在编写一个加载电影的外部txt文件的程序。这部分工作正常。然后我有一个功能,搜索从文件生成的电影列表。该函数应打印出以搜索字符串开头的所有电影。

def startsWithSearch(movieList):

    searchString = input("Enter search string: ")

    for movie in movieList:
        if(movie.startswith(searchString) == True):
        print(movie)

但是,当我输入搜索字符串时,即使列表中的电影以该字符串开头,也不会打印电影。

3 个答案:

答案 0 :(得分:1)

如果给出正确的输入数据,您的功能可以按预期工作:

def startsWithSearch(movieList):

    searchString = "test4"

    for movie in movieList:
        if(movie.startswith(searchString)):
            print(movie)


startsWithSearch(["test1","testnomatch","test4","test4should","not_test4"])

输出是:

test4
test4should

所以所有正确的...必须是您的输入数据

我知道你想要一个StartsWith解决方案,正如你的功能名称所说,但实际上搜索电影,它更方便,如果你在字符串中找到任何匹配,所以如果我搜索“mentalist”我会找到“心理学家“,那么你可以使用:

if searchString in movie:
    print(movie)

正如安娜所建议的那样忽视案例:

if searchString.lower() in movie.lower():

甚至是有正则表达式的爱好者(在第一行需要import re):

if re.match(".*" + searchString,movie,re.I):

或者如果你真的只想在名字的开头匹配:

if re.match(searchString,movie,re.I):

应该是足够的替代品:))

答案 1 :(得分:0)

我认为input()函数可能会在最后返回一个新行。收集输入数据后尝试添加searchString = searchString.strip()。 您也可以尝试在比较之前将两者都转换为小写。

此外,if(movie.startswith(searchString) == True):行也可以写成if movie.startswith(searchString):

答案 2 :(得分:0)

当我从文件中读取时,我遇到了同样的问题。 startswith由于从文件中读取换行符而失败。在使用rstrip()函数之前,请先使用startswith从两个字符串中删除换行符。