我是一个新手,但是我确定对于我想要的东西必须有一个相对简单的解决方案。
我只是想将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:列表索引超出范围