Моя программа должна читать файлы csv, которые могут содержать 1,2 или 3 столбца, и необходимо соответствующим образом изменить его поведение. Есть ли простой способ проверить количество столбцов без "потребления" строки до запуска итератора? Следующий код является самым элегантным, с которым я мог бы справиться, но я бы предпочел запустить проверку до начала цикла for:
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.")
Изменить: Я должен был включить дополнительную информацию о моих данных. Если есть только одно поле, оно должно содержать название в научной нотации. Если есть два поля, первое должно содержать имя, а второе - код связи. Если есть три поля, дополнительное поле содержит флаг, который указывает, действительно ли это имя. Поэтому, если какая-либо строка имеет 1, 2 или 3 столбца, все они должны быть одинаковыми.