2017-10-31 6 views
0

Ich versuche, Elemente aus der Liste zu extrahieren. Ich habe eine Menge von Daten nachgeschlagen, aber ich weiß nicht ..Wie kann ich Elemente aus Listen in Python extrahieren

das ist meine test.txt (Textdatei)
[in der Tabelle = Zeit, rechts in der Tabelle = Wert links]

0 81  
1 78  
2 76 
3 74 
4 81 
5 79 
6 80 
7 81 
8 83 
9 83 
10 83 
11 82 
    . 
    . 
22 81 
23 80 

Wenn die aktuelle Zeit gleich der Zeit in der Tabelle ist, möchte ich den Wert dieser Zeit extrahieren.

das ist mein demo.py (Python-Datei)

import datetime 

now = datetime.datetime.now()) 
current_hour = now.hour 

with open('test.txt') as f: 
    lines = f.readlines() 

time = [int(line.split()[0]) for line in lines] 
value = [int(line.split()[1]) for line in lines] 

>>>time = [0,1,2,3,4,5,....,23] 
>>>value = [81,78,76,......,80] 
+2

, warum Sie nicht nur 'Wert verwenden [current_hour]' seit Index/Stunde beide also bei 0 – depperm

Antwort

0

Sie eine Schleife machen könnte, wo Sie über die Liste iterieren an jeder Stelle der Liste nach der aktuellen Stunde suchen.

Ab Position 0 wird es mit der aktuellen Stunde verglichen. Wenn es derselbe Wert ist, wird es den Wert an der Position, die es in "Zeit" gefunden hat, der Variablen extractedValue zuweisen, dann wird die Schleife brechen.

Wenn es nicht der gleiche Wert ist, wird es um 1 die pos Variable erhöhen, die wir verwenden, um in die Liste zu schauen. So wird es weiter suchen, bis die erste if True ist oder die Liste endet.

pos=0 
for i in time: 
    if(current_hour==time[pos]): 
     extractedValue=value[pos] 
     break 
    else: 
     pos+=1 
     pass 

Fühlen Sie sich frei zu fragen, wenn Sie etwas nicht verstehen :)

+0

Froh, dass es nützlich war! :) Bitte akzeptieren Sie es als die Antwort, wenn es diejenige ist, die Sie verwenden möchten. Ich würde auch ein upvote schätzen, wenn es wie gewünscht funktioniert x) – oScarDiAnno

0

eindeutige Werte für die Zeitspalte Unter der Annahme:

import datetime 

with open('text.txt') as f: 
    lines = f.readlines() 

#this will create a dictionary with time value from test.txt as the key 
time_data_dict = { l.split(' ')[0] : l.split(' ')[1] for l in lines } 

current_hour = datetime.now().hour 

print(time_data_dict[current_hour]) 
+1

beginnen, die Sie gerade so kann dies in ein "dict" Verständnis zwingen, youc alle "l.split" zweimal jede Iteration Ihrer Schleife? –

0
import datetime 
import csv 
data = {} 


with open('hour.csv', newline='') as f: 
    reader = csv.reader(f) 
    for row in reader: 
     k, v = row 
     data[k] = v 


hour = str(datetime.datetime.now().hour) 

print(data[str(hour)]) 
Verwandte Themen