Gå til innhold

Søker i en tekstfil etter tallverdier, hvordan kan jeg få slingringsmål?


Anbefalte innlegg

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
Videoannonse
Annonse

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...