nilsnilspils Skrevet 26. august 2011 Del Skrevet 26. august 2011 Hei igjen! Hvis jeg nå har seks kolonner, skilt med tabulator der jeg vil substrahere den 3 kolonna med den 5, og den 4 kolonna med den 6, har jeg forstått at det er en csv modul som er best.. Denne koden har ikke jeg lagd, men er vel en pekepinn på hva jeg trenger. import csv with open('input', 'rb') as fd: reader=csv.reader(fd,delimiter='\t') for row in reader: Jeg har prøvd å definere en del ting i "for" løkka, men kommer til kort. Prøver å definere feks, kol1 = row[3] - row[5], men det gir bare errors. Noen råd? På forhånd takk Lenke til kommentar
Alexen Skrevet 26. august 2011 Del Skrevet 26. august 2011 Hei! Fint hvis du gir litt info om hvilken error det er, men jeg kan tenke meg at det kanskje er "TypeError: unsupported operand type(s) for -: 'str' and 'str'" ? isåfall kan du konvertere row[x] til et heltall (int) ved å bruke int(row[x]).. import csv with open('test.txt', 'rb') as fd: reader=csv.reader(fd,delimiter='\t') for row in reader: print int(row[1]) - int(row[3]) Lenke til kommentar
snippsat Skrevet 26. august 2011 Del Skrevet 26. august 2011 Når du leser fra en fil,er det string output. Viss du skal bruke tallene til og kalkulere,må du gjøre om til integer eller float. Som vist av @The_Viper@EFNET(husk code tag) import csv result = [] with open('num.txt') as f: reader = csv.reader(f,delimiter='\t') for row in reader: kol = [int(i) for i in row] result.append(kol[1] - kol[3]) print sum(result) Lenke til kommentar
nilsnilspils Skrevet 29. august 2011 Forfatter Del Skrevet 29. august 2011 Når du leser fra en fil,er det string output. Viss du skal bruke tallene til og kalkulere,må du gjøre om til integer eller float. Som vist av @The_Viper@EFNET(husk code tag) import csv result = [] with open('num.txt') as f: reader = csv.reader(f,delimiter='\t') for row in reader: kol = [int(i) for i in row] result.append(kol[1] - kol[3]) print sum(result) Hei, tusen takk for svar. Jeg fikk syntax error da jeg copy/paste'a teksten din.. Jeg vil gjerne ha programmet til å skrive til en resultatfil, men her får jeg noe krøll. import csv result = [] with open ('convert.txt') as f: with open('res.txt', 'w') as f_out: reader = csv.reader(f,delimiter='\t') for row in reader: kol = [int(i) for i in row] result.append(kol[1] - kol[3], kol[2] - kol[4]) f_out.write(sum(result)) Det beste egentlig, hadde vært om programmet kunne "sniffe" seg frem til en spesiell filendelse i mappa den er i, og bare gjort den samme kalkulasjonen, men det er kanskje ikke så lett? Uansett, meldingen jeg får i IDLE er : ValueError: invalid literal for int() with base 10: Skjønner som vanlig mindre enn minst. Lenke til kommentar
snippsat Skrevet 29. august 2011 Del Skrevet 29. august 2011 (endret) num.txt 1 2 3 1 2 3 1 2 3 import csv result = [] with open('num.txt') as f: reader = csv.reader(f,delimiter='\t') for row in reader: kol = [int(i) for i in row] result.append(kol[1] + kol[2]) with open('new.txt', 'w') as f_out: f_out.write(str(sum(result))) Når du leser eller skiver til en fil er det datatype string som brukes. I dette eksp skrives 15 til new.txt Det beste egentlig, hadde vært om programmet kunne "sniffe" seg frem til en spesiell filendelse i mappa den er i, og bare gjort den samme kalkulasjonen, men det er kanskje ikke så lett? Alt kan være vansklig viss de grunnleggende kunnskapene ikke er så gode. Oppgaven er rimlig greit,men at noen andre skiver en ferdig løsning lærer man ikke så mye av. Du spørte om bøker i en annen post her er noen greie. http://www.amazon.com/Beginning-Python-Novice-Professional-ebook/dp/B001FA0HNY/ref=sr_1_16?ie=UTF8&qid=1314654328&sr=8-16 http://www.amazon.com/Quick-Python-Book-Second/dp/193518220X/ref=sr_1_7?ie=UTF8&qid=1314654328&sr=8-7 http://www.amazon.com/Practical-Programming-Introduction-Pragmatic-Programmers/dp/1934356271/ref=sr_1_8?ie=UTF8&qid=1314654328&sr=8-8 Jeg postet en del linker i denne posten. https://www.diskusjon.no/index.php?showtopic=1288152 Endret 30. august 2011 av SNIPPSAT 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å