Skip to content
Advertisement

Finding an index in a list

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>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">something</span>&nbsp;-&gt; ALTO<br>
<br>
<span style="color: #000000; font-weight: bold; ">data 27 dic 2022 - 14:38:38::</span><br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff; ">something</span>&nbsp;-&gt; 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)
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement