首页 > 解决方案 > 从特定行开始读取,然后在该行内循环

问题描述

我有这个 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     

我想从 id 1 开始读取行,然后存储student number到一个变量中,并for在 的范围内进行循环courseRegistered以获得分数,然后将其存储到list. 我怎么做?

标签: pythoncsv

解决方案


输入格式是什么并不完全清楚(请参阅我对您的问题的评论)。假设在实际的 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]

推荐阅读