x871kx6167ss7 Skrevet 25. oktober 2007 Del Skrevet 25. oktober 2007 Hei igjen Har en tekstfil med mange målinger. Hver linje representerer ett målingstidspunkt, og alle de forskjellige verdiene er lagret med mellomrom mellom seg. Så det ser slik ut(med flere verdier): tid temp luftfuktighet fart tid temp luftfuktighet fart Programmet mitt fungerer egentlig sånn rent teoretisk, men fungerer ikke bra i praksis. Dersom jeg søker etter "20 temp", får jeg bare når tempraturen er 20C selvfølgelig, og ikke tempraturer på 20.1. Noen som kan hjelpe meg med å få slingringsmål på søkene? Et annet problem er det at tid er gitt i formatet 00000.0, så dersom jeg ønsker å lese av målingen som ble gjort etter ett sek må jeg søke etter "00001.0 sek", noen måte å gjøre dette mer brukervendlig? Her er kildekoden: Klikk for å se/fjerne innholdet nedenfor #!/usr/bin/python import sys try: filnavn = sys.argv[1] #Henter filnavn fra argument except IndexError: filnavn = raw_input("Skriv inn absolutt filsti til filen: ") #henter filnavn ved aa sporre fil = open(filnavn, 'r') #aapner filen fil = fil.read() #Leser innholdet inn til fil fil = fil.split('\n') #lagrer filen som en liste, hvor hver linje er en del #Skriver ut informasjonen paa toppen av filen print "\n\tInfo om filen:" for i in range(0,6): print "\t\t\t", fil[i] raw_input("Trykk en tast for aa fortsette...") print "\n" #De forskjellige verdiene som er lagret i filen. Rekkefolgen er den samme som det blir lagret i filen alternativ = ["sek", "pressure", "temp", "humidity", "hoyde", "dewpoint", "rindex" ,"grindex", "mrindex", "sos", "density", "vaporpreassure", "ptemp", "vtemp", "shumidity", "spare1", "spare2", "spare3", "spare4", "utc", "windspeed", "winddirection", "nswind", "eswind", "vwind", "longitude", "latitude", "geometrichoyde"] #Skriver ut en liste over mulighetene print "Flight Time, seconds since launch was detected", "\t"*3, "- \t", alternativ[0] print "Pressure, mbars", "\t"*6, "-\t", alternativ[1] print "Temperature, C", "\t"*7, "-\t", alternativ[2] print "Relative Humidity, % relative humidity", "\t"*4, "-\t", alternativ[3] print "Geopotential Height, meters", "\t"*5, "-\t", alternativ[4] print "Dewpoint, C", "\t"*7, "-\t", alternativ[5] print "Refractive Index, N Units", "\t"*5, "-\t", alternativ[6] print "Gradient Refractive Index, N / km", "\t"*4, "-\t", alternativ[7] print "Modified Refractive Index, M Units", "\t"*4, "-\t", alternativ[8] print "Speed of Sound, m/s", "\t"*6, "-\t", alternativ[9] print "Air Density, grams per cubic meter", "\t"*4, "-\t", alternativ[10] print "Vapor Pressure, mbars", "\t"*6, "-\t", alternativ[11] print "Potential Temperature, C", "\t"*5, "-\t", alternativ[12] print "Virtual Temperature, C", "\t"*6, "-\t", alternativ[13] print "Specific Humidity, grams per kilogram", "\t"*4, "-\t", alternativ[14] print "Ukjent1", "\t"*7, "-\t", alternativ[15] print "Ukjent2", "\t"*7, "-\t", alternativ[16] print "Ukjent3", "\t"*7, "-\t", alternativ[17] print "Ukjent4", "\t"*7, "-\t", alternativ[18] print "UTC Time, seconds", "\t"*6, "-\t", alternativ[19] print "Wind Speed, m/s", "\t"*6, "-\t", alternativ[20] print "Wind Direction, degrees azimuth", "\t"*4, "-\t", alternativ[21] print "North/South Wind Component, Unfiltered wind component, m/s", "\t"*1, "-\t", alternativ[22] print "East/West Wind Component, Unfiltered wind component, m/s", "\t"*1, "-\t", alternativ[23] print "Vertical Wind Component, Unfiltered wind component, m/s", "\t"*1, "-\t", alternativ[24] print "Longitude, decimal degrees", "\t"*5, "-\t", alternativ[25] print "Latitude, decimal degrees", "\t"*5, "-\t", alternativ[26] print "Geometric Height, meters", "\t"*5, "-\t", alternativ[27] igjen = True while igjen == True: #Kjorer helt til man har faatt inn noe som kan sokes med print "\n\tSkriv inn <verdi> <enhet> som kan sokes etter." inn = raw_input("\t:") inn = inn.split(' ') try: verdi = inn[0] enhet = inn[1] igjen = False except IndexError: print "\n\t\t!!Feil!!" print "\n\tResultat:\n" verdi = verdi.replace(',','.') enhet = enhet.lower() #gjor om soket til lower enhet = alternativ.index(enhet) #henter verdien til det som skal hentes for i in range(10,len(fil)): #Gaar gjennom alle linjene fra filen linje = fil[i] linje = linje.split(' ') #deler opp linjen i en liste med alle verdiene try: for i in range(0,len(linje)): #fjerner "tomme" verdier linje.remove('') except: try: for i in range(0,len(linje)): #fjerner en verdi som ofte er paa slutten av linjene linje.remove('\r\r') except ValueError: a = 0 #Nekter aa kjore dersom jeg ikke har noe her... if linje[enhet] == verdi: #Skjekker om verdien vi soker etter er lik verdien i linjen. print " ".join(linje) #Skriver ut dersom soket treffer print "\n" Forste linjene fra filen, slik at dere kan se hvordan filen ser ut, dersom dere lurer... Klikk for å se/fjerne innholdet nedenfor Flight ID: 10221 Date: 10-22-07 Time: 12:12:58 Ballongt�rn Release Point: 69.297N 16.029E 8 m Sonde Serial Number 5059502 Surface Data: 1014.0 mb 11.1 C 64% 6.0 m/s @ 90 deg. 00000.0 1003.6 10.1 66 92 ///./ ///./ /////./ ////./ 338.0 1230.6 8.2 9.8 10.9 5.08 35.61 427.30 248.20 0.00 45469.7 8.8 199 6.6 -1.6 -2.0 16.03084 69.29974 91.7 00001.0 1003.0 10.1 66 97 4.1 312.9 -18.8 328.1 338.0 1230.0 8.2 9.8 10.9 5.09 35.61 427.30 248.20 0.00 45470.7 9.0 200 10.4 -0.8 -3.5 16.03081 69.29984 96.7 00002.0 1002.6 10.0 67 100 4.1 312.8 -29.1 328.5 338.0 1229.7 8.2 9.8 10.9 5.09 35.61 427.30 248.20 0.00 45471.7 9.2 201 11.3 6.0 -3.8 16.03093 69.29993 100.0 00003.0 1002.3 10.0 67 103 4.1 312.8 -5.6 328.9 338.0 1229.4 8.2 9.8 10.9 5.10 35.61 427.30 248.20 0.00 45472.7 9.4 203 10.4 9.5 -3.1 16.03116 69.30003 102.5 00004.0 1001.7 9.9 67 107 4.1 312.7 -18.4 329.5 337.9 1228.9 8.2 9.8 10.8 5.10 35.61 427.29 248.20 0.00 45473.7 9.7 204 12.7 5.7 -3.6 16.03131 69.30015 107.0 00005.0 1001.0 9.9 67 113 4.1 312.6 -24.8 330.3 337.9 1228.3 8.2 9.8 10.8 5.10 35.61 427.29 248.20 0.00 45474.7 9.9 205 11.4 1.2 -4.9 16.03135 69.30025 112.6 00006.0 1000.4 9.8 67 118 4.1 312.4 -27.2 331.0 337.9 1227.7 8.2 9.8 10.7 5.10 35.61 427.30 248.20 0.00 45475.7 10.1 206 5.9 2.1 -5.6 16.03139 69.30032 118.0 00007.0 999.8 9.8 67 123 4.1 312.3 -34.4 331.5 337.9 1227.2 8.2 9.8 10.7 5.10 35.61 427.29 248.20 0.00 45476.7 10.3 207 4.1 6.6 -5.0 16.03154 69.30035 122.5 00008.0 999.2 9.8 68 128 4.1 312.1 -23.5 332.2 337.8 1226.6 8.2 9.8 10.6 5.10 35.61 427.29 248.20 0.00 45477.7 10.5 207 9.5 10.2 -4.6 16.03177 69.30042 127.8 00009.0 998.7 9.7 68 132 4.0 312.0 -24.0 332.8 337.8 1226.2 8.2 9.8 10.6 5.10 35.61 427.29 248.20 0.00 45478.7 10.7 208 16.4 5.9 -3.1 16.03194 69.30057 131.8 Lenke til kommentar
zeitgeist Skrevet 25. oktober 2007 Del Skrevet 25. oktober 2007 Dersom innfil alltid har samme struktur, tror jeg at jeg ville ha opprettet en sqlite3-database (bygget inn i Python 2.5) lagt alt inn der. Og brukt plain SQL til å gjøre søk. Lenke til kommentar
x871kx6167ss7 Skrevet 26. oktober 2007 Forfatter Del Skrevet 26. oktober 2007 Takk for svar. Skal undersøke sqlite. Lenke til kommentar
Orjanp Skrevet 27. oktober 2007 Del Skrevet 27. oktober 2007 Du kan jo også bare sjekke slik: if alt[0][0] == '2' and alt[0][1] == '0': Den er True dersom verdien er 20.x Ørjan... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå