如何让我的代码附加到特定csv行的末尾

时间:2017-11-13 19:46:19

标签: python-3.x csv

这是我的代码:

import csv

with open("Grades.txt", "r") as file:
        reader = csv.reader(file)
        for row in reader:
            if name == row[0]:
                with open("Grades.txt", "a") as file:
                    writer = csv.writer(file)
                    writer.writerow(grade)

变量名称和等级已在早期函数中定义。我有一个带有名称列表的文本文件,因此代码检查名称(John)是否在文本文件中,然后应该在名称旁边写下等级(A),用逗号分隔它。问题是我的代码会在整个名称列表下面写一个空格或2个空格。如果我可以让它写到名称的末尾,它就会像(JohnA)一样显示而没有分离。我对如何解决这个问题一无所知。如果你能纠正我的代码去做我需要的东西,我将不胜感激。变量name是来自不同函数的登录的输入,因此每次输入都不同。也可以通过我的注册功能添加新名称,因此类似的问题也无济于事。

例如说我的文本文件如下所示:

约翰

萨姆

鲍勃

Sam获得的成绩是A.如何将A等级添加到Bobs名称的末尾,并用逗号分隔名称和等级?

1 个答案:

答案 0 :(得分:0)

我不知道这个代码示例应该如何完成您描述的工作。遗憾。

import csv

students = [["Anne", "A"], ["Emily", "B"]]

with open("grades.csv", "w", newline="") as f:
    writer = csv.writer(f)
    for row in students:
        writer.writerow(row)

您必须将一个tupel或一个列表作为一行提供给csv.writer。您描述的内容是您对该文件写了两次的声音,但我没有看到这是由您所描述的代码完成的。

我希望能帮到你一点点。对不起,我无法发表评论...

新:

我想说的是,您应该将主程序中的名称和等级放在一起,然后将其写入文件。这就是我如何解决你的任务。

names = ["John", "Sam", "Bob"]
grades = ["A", "B", "C"]

names_grades = zip(names, grades)

for row in names_grades:
    print(row)

新行可以轻松写入您的文件。