Начните чтение с определенных строк, затем выполните цикл внутри этой строки

#python #csv

#питон #csv

Вопрос:

У меня есть этот csv-файл, вот пример того, как выглядит файл:

 Number of students     80
Courses available      120
 
id     student number     coursesRegistered     scores
1      20001              5                     90     80     70     90     61
2      20002              4                     40     60     75     80     
 

Я хотел бы начать чтение строк, начиная с идентификатора 1, затем сохранить student number в переменную, а также выполнить for цикл в диапазоне courseRegistered , чтобы получить оценку, а затем сохранить ее в a list . Как мне это сделать?

Комментарии:

1. Вы пробовали использовать DictReader ?

2. Формат вашего файла не совсем понятен. Вы отображаете, как выглядит файл, когда он загружается в электронную таблицу, такую как Excel, или вы отображаете фактический файл CSV? Если последнее, являются ли эти символы табуляции между столбцами? Похоже, что каждая оценка занимает свой собственный столбец.

Ответ №1:

Не совсем ясно, каков формат ввода (см. Мой комментарий к вашему вопросу). Предполагая, что каждый столбец в реальном файле CSV разделен запятой и что каждая оценка представляет собой отдельный столбец, тогда должно быть выполнено следующее:

 import csv


with open('test.csv', 'r', newline='') as f:
    for _ in range(4): f.readline() # skip first 4 lines
    rdr = csv.reader(f, delimiter=',')
    for row in rdr:
        student_number = int(row[1])
        courses_registered = int(row[2])
        scores = list(map(int, row[3:3 courses_registered]))
        print(student_number, scores)
 

С принтами:

 20001 [90, 80, 70, 90, 61]
20002 [40, 60, 75, 80]