user2615729
user2615729

Reputation: 3

reading a common string in python

Hi i want to read and display strB's line number which is a common string and follows immediately in file after reading string A through string A's line number

i am a common line
i am a common line
i am a common line
i am a common line
defghijklt 
I am a unique line 
jaslkdjaldjsadsajdlakjdasldj
spjpsijgpigjpijgjfdpgfdpgjdppdfjgdpfpi
jspijdfpgfdjgfdijgdfpjgdfpijgdfijfdoifdjpi
jgdfjfdpijfdpijgdgdjfdfjgidjgfdoijdfojgdfoijfdoo
jgdfoijfdijfdoifdjgfdoijgfdoijfdojfdoijfdojfdoifjdogfdjoi
i am a common line    
i am a common line
ueowueoodsjpdogfdpofdpofdpdfigdpgdifgdifdiikpkpjfdspjf 

this is my code :

strB = 'i am common line'
strA = 'I am a unique line'

input_file = open('mynewfile.txt', 'r')
with input_file as myFile:
    for num, line in enumerate(myFile):
        if strA in line:
            print num
            for num in range (num, num+12):
                if strB in line:
                    print num

please suggest what should I do?

Upvotes: 0

Views: 79

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1121256

Just set a flag:

input_file = open('mynewfile.txt', 'r')
with input_file as myFile:
    foundA = False
    for num, line in enumerate(myFile):
        if strA in line:
            foundA = True
            print num

        # Only look for `strB` if `strA` has been seen first
        if foundA and strB in line:
            print num
            break  # stop reading the file.

Alternatively, nest the loops, to search for each strB-after-strA event:

input_file = open('mynewfile.txt', 'r')
with input_file as myFile:
    enumerated = enumerate(myFile):
    for num, line in enumerated:
        if strA in line:
            print num
            for num, line in enumerated:
                if strB in line:
                    print num
                    break  # search for next strA

Upvotes: 1

Related Questions