i have csv file composed of 3 column.
my goal add fourth column , populate statement based on columns n°2 , n°3.
here beginning of code :
import csv, sys, locale, operator abord = "/home/julien/csv/abord.csv" file1 = open (abord, 'rb') reader1 = csv.reader (file1, delimiter = ';', quotechar=' ') next(reader1) row1 in reader1: id = row1 [0] larg_1 = row1 [1] larg_2 = row1 [2] and want make things :
if larg_1 > 10 , larg_2 <20: print "result ok" in fourth column "control" else: print "result fail" in fourth column "control" save csv, nom composed of 4 columns do know how ? thank !
you have write file (using csv.writer)
sourcepath = "/home/julien/csv/abord.csv" destpath = "/home/julien/csv/abord-fixed.csv" open(sourcepath, "rb") source, open(destpath, "wb") dest: # xxx sure want quotechar ??? reader = csv.reader(source, delimiter = ';', quotechar=' ') writer = csv.writer(dest, delimiter = ';', quotechar=' ') # first copy (augmented) headers headers = reader.next() headers.append("control") writer.writerow(headers) # let's loop on content rownum, row in enumerate(reader): # need convert data int # adding proper error handling here might help... # status = "result ok" if (int(row[1]) > 10 , int(row[2]) < 20) else "result fail" try: l1 = int(row[1]) l2 = int(row[2]) except (typeerror, valueerror), e: err = "non integer value l1 , or l2 in row %s line %s - got : %s" % ( rownum, reader.linenum, row ) print >> sys.stderr, err result = "invalid values" else: if l1 > 10 , l2 < 20: result = "result ok" elif rownum == 42: # stupid value if/elif/else exemple result = "what's question ?" else: result = "result fail" row.append(result) writer.writerow(row) if needed can delete source file , rename new one.
Comments
Post a Comment