我需要在一串名字中找到一个给定的词

I need to find a given word in a string of names

sudo:x:27:mike,david,dash,bart,pablo,jack。该字符串包含一些仅由大写字母分隔的名称。如果我说我想知道 mike 是否在字符串中,我希望我的程序查找那个给定的名字。但是,如果我询问 "pa" 是否在字符串中,程序会说 "pa" 在字符串中,即使 "pa" 不是名称,而是名称的一部分。我如何将每个名称分开或更好,将其设置为一种列表,以便更容易识别给定名称是否在组中?

这是我的程序到目前为止的样子:

import re

user = str(input("What user are you looking for?\n"))

txt = open("group.txt", "r")

for line in txt:
    if re.match("(.*)sudo(.*)", line):
        if <!where I need the code!>:
            print(user + " is a sudoer")
            break
        else:
            print(user + " is not a sudoer")
            break

如果input是您提到的字符串,name是您要查找的名称:

name in input.rpartition(':')[2].split(',')

将 return 您正在寻找的布尔值。

在我的环境中,以下内容按预期工作:

    import re

    user = str(input("What user are you looking for?\n"))

    txt = open("group.txt", "r")

    for line in txt:
        if re.match("(.*)sudo(.*)", line):
            if re.match("sudo.+(:|,)%s(,|$)" % user, line):
                print(user + " is a sudoer")
                break
            else:
                print(user + " is not a sudoer")
                break

请注意正则表达式为case-sensitive,例如如果您以大写形式指定他的名字作为用户输入,它将找不到 Mike