0

3列で構成されるcsvファイルがあります。

私の目標は、4 番目の列を追加し、列 n°2 と n°3 に基づくステートメントを入力することです。

これが私のコードの始まりです:

import csv, sys, locale, operator

abord = "/home/julien/csv/ABORD.csv"
file1 = open (abord, 'rb')
reader1 = csv.reader (file1, delimiter = ';', quotechar=' ')

next(reader1) 
for row1 in reader1:
    ID = row1 [0]
    LARG_1 = row1 [1]
    LARG_2 = row1 [2]

そして、私はそのようなものを作りたいです:

if LARG_1 > 10 and LARG_2 <20:
    print "result OK" in a fourth column "CONTROL"
else:
    print "result fail" in the fourth column "CONTROL"

then save the csv, nom composed of 4 columns

どうすればできるか知っていますか?ありがとうございました !

4

1 に答える 1

1

別のファイルに書き込む必要があります(を使用csv.Writer

sourcepath = "/home/julien/csv/ABORD.csv"
destpath =  "/home/julien/csv/ABORD-fixed.csv"

with open(sourcepath, "rb") as source, open(destpath, "wb") as dest:
    # XXX are you sure you want this as quotechar ???
    reader = csv.reader(source, delimiter = ';', quotechar=' ')
    writer = csv.writer(dest,  delimiter = ';', quotechar=' ')

    # first copy the (augmented) headers
    headers = reader.next()
    headers.append("CONTROL")
    writer.writerow(headers)

    # then let's loop on the content
    for rownum, row in enumerate(reader):
        # we need to convert data to int             
        # adding proper error handling here might help...
        # status = "result OK" if (int(row[1]) > 10 and int(row[2]) < 20) else "result fail"
        try:
            l1 = int(row[1])
            l2 = int(row[2])
        except (TypeError, ValueError), e:
            err = "non integer value for l1 and or l2 in row %s line %s - got : %s" % (
                rownum, reader.linenum, row
                )
            print >> sys.stderr, err
            result = "invalid values"
        else:
            if l1 > 10 and l2 < 20:
                result = "result OK"
            elif rownum == 42: # stupid value for if/elif/else exemple
                result = "what's the question ?"
            else:
                result = "result fail"

        row.append(result)
        writer.writerow(row)

必要に応じて、ソース ファイルを削除し、新しいファイルの名前を変更できます。

于 2013-05-06T10:58:04.650 に答える