我一直在使用以下代码尝试不同的场景,似乎无法获得正确的代码。我试图在列表中查找单词并返回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!")
即使提示从哪里开始,任何帮助都会受到赞赏。
答案 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
我希望这会有所帮助。