user2678904
user2678904

Reputation:

Python - searching if string is in file

I want to search for string in file and if there is string make action and if there isn´t string make other action, but from this code:

    itcontains = self.textCtrl2.GetValue()
    self.textCtrl.AppendText("\nTY: " + itcontains)
    self.textCtrl2.Clear()
    pztxtflpath = "TCM/Zoznam.txt"
    linenr = 0
    with open(pztxtflpath) as f:
        found = False
        for line in f:
            if re.search("\b{0}\b".format(itcontains),line):
                hisanswpath = "TCM/" + itcontains + ".txt"
                hisansfl = codecs.open(hisanswpath, "r")
                textline = hisansfl.readline()
                linenr = 0
                ans = ""
                while textline <> "":
                    linenr += 1
                    textline = hisansfl.readline()
                hisansfl.close()
                rnd = random.randint(1, linenr) - 1
                hisansfl = codecs.open(pztxtflpath, "r")
                textline = hisansfl.readline()
                linenr = 0
                pzd = ""
                while linenr <> rnd:
                    textline = hisansfl.readline()
                    linenr += 1
                ans = textline
                hisansfl.close()
                self.textCtrl.AppendText("\nTexter: " + ans)
        if not found:
            self.textCtrl.AppendText("\nTexter: " + itcontains)
            wrtnw = codecs.open(pztxtflpath, "a")
            wrtnw.write("\n" + itcontains)
            wrtnw.close

If there is not that string it is working corectly, but if there is that string, what i am searching for it makes if not found action. I really don´t know how to fix it, i have already try some codes from other sites, but in my code it doesn´t works. Can somebody help please?

Upvotes: 1

Views: 80

Answers (1)

Mike Driscoll
Mike Driscoll

Reputation: 33101

Are you saying that the code underneath the following if statement executes if the string contains what you're looking for?

 if re.search("\b{0}\b".format(itcontains),line):

If so, then you just need to add the following to the code block underneath this statement:

found = True

This will keep your if not found clause from running. If the string you are looking for should only be found once, I would also add a break statement to your first statement to break out of the loop.

Upvotes: 1

Related Questions