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

时间:2018-02-22 01:36:05

标签: python-3.x find-occurrences

sudo:x:27:mike,david,dash,bart,pablo,jack。此字符串包含一些仅由cama分隔的名称。如果我说我想知道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

2 个答案:

答案 0 :(得分:0)

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

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

将返回您正在寻找的布尔值。

答案 1 :(得分:0)

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

    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

请注意,正则表达式区分大小写,例如如果您以大写形式指定其名称作为用户输入,则无法找到 Mike