[Python] Find number of columns in csv file

Discussão em 'Python' iniciado por Stack, Abril 18, 2025.

  1. Stack

    Stack Membro Participativo

    My program needs to read csv files which may have 1,2 or 3 columns, and it needs to modify its behaviour accordingly. Is there a simple way to check the number of columns without "consuming" a row before the iterator runs? The following code is the most elegant I could manage, but I would prefer to run the check before the for loop starts:

    import csv
    f = 'testfile.csv'
    d = '\t'

    reader = csv.reader(f,delimiter=d)
    for row in reader:
    if reader.line_num == 1: fields = len(row)
    if len(row) != fields:
    raise CSVError("Number of fields should be %s: %s" % (fields,str(row)))
    if fields == 1:
    pass
    elif fields == 2:
    pass
    elif fields == 3:
    pass
    else:
    raise CSVError("Too many columns in input file.")


    Edit: I should have included more information about my data. If there is only one field, it must contain a name in scientific notation. If there are two fields, the first must contain a name, and the second a linking code. If there are three fields, the additional field contains a flag which specifies whether the name is currently valid. Therefore if any row has 1, 2 or 3 columns, all must have the same.

    Continue reading...

Compartilhe esta Página