Python合并两个CSV文件

2024-09-30 12:35:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个CSV文件。一:

s555555,7
s333333,10
s666666,9
s111111,10
s999999,9

还有两个:

^{pr2}$

我想以:

[['s111111', '10', '', '', '', ''],
 ['s222222', '',   '', '', '', ''],
 ['s333333', '10', '', '', '', ''],
 ['s444444', '',   '', '', '', ''],
 ['s555555', '7',  '', '', '', ''],
 ['s666666', '9',  '', '', '', ''],
 ['s777777', '',   '', '', '', '']]

我的代码是:

new_marks = get_marks_from_file('assign1_marks.csv')
marks     = get_marks_from_file('marks.csv')

def merge_marks(all_marks, new_marks, column):
    for n in range(len(new_marks)):
        for a in range(len(all_marks)):
            if all_marks[a][0]==new_marks[n][0]:
                 all_marks[a][column]= new_marks[n][column]

                return marks

我做错什么了?我一直得到:

>>> merge_marks(marks, new_marks, 1)

[['s111111', '',  '', '', '', ''],
 ['s222222', '',  '', '', '', ''],
 ['s333333', '',  '', '', '', ''],
 ['s444444', '',  '', '', '', ''],
 ['s555555', '7', '', '', '', ''],
 ['s666666', '',  '', '', '', ''],
 ['s777777', '',  '', '', '', '']]

Tags: csvfromnewgetcolumnallfilemarks
1条回答
网友
1楼 · 发布于 2024-09-30 12:35:24

线

                return marks

必须被三个级别取消缩进,才能从for循环和if语句中取出。现在它将返回它找到的第一个all_marks[a][0]==new_marks[n][0]匹配项,而不会替换其他匹配项。在

您还希望返回all_marks,而不是marks:在这种情况下,全局变量{}碰巧是相同的,并且也发生了更改,但是如果您使用一个名为任何其他名称的变量来调用它,它将失败。在

因此,解决方案是:

^{pr2}$

相关问题 更多 >

    热门问题