在列表中查找字符串

时间:2017-06-17 06:38:48

标签: python-3.x

我一直在使用以下代码尝试不同的场景,似乎无法获得正确的代码。我试图在列表中查找单词并返回True。我要找的单词是“Jack”,但是列表包含“Jackie”,这是不正确的,但代码返回True。

def name_finder(listName,name):
if listName.find(name)!= -1:
    return True
else:
    return False

nameList = "Joshua Diaddigo, Marguerite Murrell, Jackie Elliott"

print(name_finder(nameList,"Jack"))
print("Done!")

即使提示从哪里开始,任何帮助都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

一种方法是使用regex module

def name_finder(lst, name):
    re_str = '(^|\ |,){}($|\ |,)'.format(name)
    return re.search(re_str, lst) != None

正则表达式匹配<'字符串的开头'或者'空间'或者是逗号'>然后是名称,后跟<'字符串的结尾'或者'空间'或者是逗号'>。可能有更优雅的方式为此编写正则表达式...

答案 1 :(得分:1)

如果您尝试在字符串中查找整个单词,则可以将regex字边界符号\b一起使用。

import re
def name_finder(names, name):
    return (re.search(r'\b%s\b'%re.escape(name), names) is not None)

答案 2 :(得分:0)

你需要在python的list数据类型中转换你的name_list,你可以这样做,

nameList = "Joshua Diaddigo, Marguerite Murrell, Jackie Elliott"
nameList = nameList.split(',')
name = "Jack"

def name_finder(nameList,name):
    if name in nameList:
        return True
    else:
        return False

我希望这会有所帮助。