用2个csv文件循环扩散

时间:2018-09-27 06:09:49

标签: python-3.x

好吧,这是关于csv文件和循环的最后一个问题。

所以我想循环执行以下操作。

这是我列出的学生的csv文件。

文件1

['Needie Seagoon', '57', '', '83', '55', '78', '', '91', '73', '65', '56', '', '', '']
['Eccles', '', '98', '91', '80', '', '66', '', '', '', '77', '78', '48', '77']
['Bluebottle', '61', '', '88', '80', '60', '', '45', '52', '91', '85', '', '', '']
['Henry Crun', '92', '', '58', '50', '57', '', '67', '45', '77', '72', '', '', '']
['Minnie Bannister', '51', '', '97', '52', '53', '', '68', '58', '70', '69', '', '', '']
['Hercules Grytpype-Thynne', '', '78', '62', '75', '', '67', '', '', '', '48', '56', '89', '67']
['Count Jim Moriarty', '51', '', '68', '51', '66', '', '55', '72', '50', '74', '', '', '']
['Major Dennis Bloodnok', '', '54', '47', '59', '', '48', '', '', '', '66', '58', '53', '83']

然后我有了另一个csv文件,其中包含每个课程的最高分数:

文件2

CITS1001    95
CITS1401    100
CITS1402    97
CITS2002    99
CITS2211    94
CITS2401    95
CITS3001    93
CITS3002    93
CITS3003    91
CITS3200    87
CITS3401    98
CITS3402    93
CITS3403    88

所以我想做的并且一直在努力实现的目标是尝试将每个学生的分数除以课程的最高分数。

因此,对于每个学生,该值都是水平的,我希望它被垂直除以另一个值的值。

例如:

['Needie Seagoon','57','','83','55','78','','91','73','65','56','', ”,“]

我想要57/95,跳过,83 / 100、55 / 97 ...你知道我要去的地方吗?

我想对文件中的每个名称执行此操作。某些人可能对这段代码很熟悉,但是我知道我做错了什么。

def normalise(students_file, units_list):
    file1 = open(students_file, 'r')
    data1 = file1.read().splitlines()

    file2 = open(units_list, 'r')
    data2 = file2.read().splitlines()


    for line in data1:
        line = line.split(",")
        for row in data2:
            row = row.split(",")
            for n in range(1, len(row), 2):
                for i in range(1, len(line), 1):
                    if line[i] == '' :
                        pass
                    else:
                        answer = int(line[1]) / int(row[n])

    file1.close()
    file2.close()

我将向您展示一些输出(持续很长时间)。

输出:

第一个循环

0.6
none
0.8736842105263158
0.5789473684210527
0.8210526315789474
none
0.9578947368421052
0.7684210526315789
0.6842105263157895
0.5894736842105263
none
none
none

第二个循环

0.57
none
0.83
0.55
0.78
none
0.91
0.73
0.65
0.56
none
none

我知道我有readline(),但是当我做readlines()时,我不能剥离/ n,因为它不允许我这样做,并且end =''使代码混乱。此输出表明,students行中的每个值都将除以95,然后循环回到起始位置,并将每个值都循环乘以100,依此类推。如何将第一个值除以95,再除以100,依此类推。

很抱歉,冗长的解释/问题,但我被告知要进一步解释自己。

谢谢。

0 个答案:

没有答案