I have an html file which I open in notepad and read in python as list
lst = file.readlines()
the html is done like this:
<span style="color: #000000; font-weight: bold; ">data 27 dic 2022 - 14:25:59::</span><br> <br>     <span style="color: #0000ff; ">something</span> -> ALTO<br> <br> <span style="color: #000000; font-weight: bold; ">data 27 dic 2022 - 14:38:38::</span><br> <br>     <span style="color: #0000ff; ">something</span> -> NO_ACQ<br> <br> <span style="color: #000000; font-weight: bold; ">data 27 dic 2022 - 14:38:40::</span><br>
I’m making a search on word “data” and from there I manipulate the string in order to get the data. Since I need to iterate this research and I don’t want to start everytime from the first “data”/”time”-row, is there a command to get the “index” of the row?
This is the main code:
while exit==0:
                  
            timestamp, stop, index=timestamp_search(path,"data",iterazione)
            print ('timestamp=', timestamp)
           
            if timestamp>passed_time and timestamp<actual_time:
                do something
                exit=1
            elif stop==1:
                exit=1
            else:
                iterazione=index+1
this instead is the def:
def timestamp_search(file_path, word_1, iterazione):
   
    stop=0
    with open(file_path, 'r') as file:
            lst = file.readlines()
            print ('iterazione',iterazione)
            
            if (lst):
                    if iterazione<len(lst):
                        for index, line in enumerate(lst[iterazione:]):
                            if line.find(word_1) != -1: 
                                print (index,line)
                                #do something to calculate timestamp
                                break
                    else:
                        stop=1
                        return timestamp, stop
            else:
                    print ('File  vuoto')
            
    return timestamp, stop, index
I’ve located the error. Basically it is how I’m passing the information to lst. I mean: when iterazione=index=0 in the first cycle, lst starts from index 0 and this is ok when iterazione=index+1 (in the next cycle) this time lst will start from index 1 and the word “data” will be found at index 3. Then again in the next cycle iterazione=4 but this time lst will start from index 4 and this means that “data” will be found at index 0 so in the next loop the counter is wrong.
Advertisement
Answer
Use the enumerate method to get an additional index attribute while looping.
for index, line in enumerate(lst[iterazione:]):
    if line.find("data") != -1: 
        print (index, line)