匹配CSV行以进行输入,然后从另一列读取

时间:2020-04-02 16:18:45

标签: python python-3.x

我是一个新手,但是我确定对于我想要的东西必须有一个相对简单的解决方案。

我只是想将CSV中的第一列与用户输入匹配,然后找到匹配项时,就检索接下来两列中的下两个值,并将它们分配给名称和标记。

用户搜索ID,该函数将筛选每行的第一个索引,如果找到匹配项,则将该行的后两列放在“名称”和“标记”中。

CSV文件在每个新行上均具有以下格式的条目:1,Bertrand,83 我已经包含了保存功能,以防万一我格式化错误。

我收到错误IndexError:列表索引超出范围 我搜索了几个小时,并尝试实施3个解决方案,但似乎没有任何效果。

No more coke!

编辑:曾经有:

import csv class studentProfile: def __init__(self, sid, name, mark): self.sid = sid self.name = name self.mark = mark def saveCsv(self): with open("studentDB.csv", "a") as csvfile: prowriter = csv.writer(csvfile, delimiter=",", quotechar="|") prowriter.writerow([self.sid, self.name, self.mark]) print("Profile {}({}) saved.".format(self.name, self.sid)) def loadCsv(self): search = input("Enter a Student ID to retrieve profile: ") with open("studentDB.csv", "r") as csvfile: csvloader = csv.reader(csvfile, delimiter=",", quotechar="|") for row in csvloader: if search == row[0]: self.sid = search self.name = row[1] self.mark = row[2]

现在已纠正,但错误仍然存​​在:

输入学生ID以检索个人资料:2 追溯(最近一次通话): 文件“ C:\ Users \ techn \ Desktop \ python工作区\ zzzmypro \ garbagebench.py​​”,第83行,在 p1.loadCsv() 在loadCsv中的第48行,文件“ C:\ Users \ techn \ Desktop \ python工作区\ zzzmypro \ garbagebench.py​​” 如果搜索==行[0]: IndexError:列表索引超出范围

1 个答案:

答案 0 :(得分:1)

为什么要放list来获得search呢?

您应该更改为search = input("Enter a Student ID to retrieve profile: "),然后它像一个超级按钮一样工作。这是您的代码,只需稍作调试即可

enter image description here