-1

私はそのような名前のcsvファイルを持っています:test1.csv

read_start,read_end
22,90
15,88
10,100

test2.csv

read_start,read_end
10,100
100,10
8,10

私の質問は、read_start のすべての値が read_end の値以下かどうかを確認できるコードを作成する方法です。

例:

validate_alignment('test1.csv')

このコードをテストすると、True が返されます

test2.csv は False になります

これは私が試したことです

import csv

def validate_alignment(alignment_filename):
    file=open(alignment_filename)

    contentss=csv.reader(file)

    for x in contentss:

        if len(x)==0:
            return False
        elif len(x)!=0:
            if x[0]<x[1]:
                return True
            else:
                return False
4

3 に答える 3

1
import csv

def validate_alignment(alignment_filename):
    f = open(alignment_filename) # avoid using key word `file`

    f.readline()  # pass the head line

    contents = csv.reader(f)
    for row in contents:
        if len(row) == 0:
            return False
        row = map(int, row)  # cast read_start and read_end to integer
        if row[0] > row[1]:
            return False
    return True

テストをしましょう:

>>> validate_alignment("test1.csv")
True
>>> validate_alignment("test2.csv")
False

test1.csvread_start,read_endにあるので、見出し行を渡すために追加f.readline()します。実際のデータにそのような行がない場合は、コードから削除してください。

于 2013-10-24T05:55:49.877 に答える
0

すべての行をチェックした後でのみ true を返す

def validate_alignment(alignment_filename):
    file=open(alignment_filename)
    contentss=csv.reader(file)
    for x in contentss:
        if len(x)==0:
            return False
        elif int(x[0])>int(x[1]):
            return False
    return True
于 2013-10-24T05:53:20.323 に答える