求教一个Python字典的问题

韩乐1202 2017-07-15 01:39:43
现在我有这样一个问题是,有个CSV文件,我想把这个CSV文件转化成元素为字典的字典处理,所以中间要把这个文件转换成二进制文件再变成字典。但是,我不知道要怎样将这个CSV文件转换成什么样的格式才能转换成成我想要的字典,第二个,我写了一段程序,报错是 _pickle.UnpicklingError: unpickling stack underflow。

import pickle

def main():
## display the data of test
students = getdictinary('C://Users//韩哲伦//Desktop//考试名单.dat')
student = inputnameofstudent(students)
diaplaydata(students,student)

def getdictinary(filename):
infile = open(filename,'rb')
students = pickle.load(infile)
infile.close()
return students

def inputnameofstudent(students):
student = input("Enter the name of a student:")
while student not in nations:
print("Not a member of this class.")
nation = input("Enter the name of a student:")
return nation

def displaydata(students,student):
print(student)

main()
求教大神
...全文
824 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jinkingmanager 2017-12-19
  • 打赏
  • 举报
回复
pickle.load的对象一定要是二进制文件数据(通过pickle.dump存入的),直接的csv文件没办法直接load的 你只能一行一行的读,用readline
似梦飞花 2017-07-18
  • 打赏
  • 举报
回复

import csv,pickle
def formatToDict(li):
    return {
        'name':li[0],
        li[1]:li[2],
        li[3]:li[4]
    }
def read():
    li=[]
    f=open('d://test.csv','r')
    t=csv.reader(f)
    for row in t:
        li.append(formatToDict(row))
    f.close()
    return li

def write():
    with open('d://test.txt','wb') as f:
        pickle.dump(read(),f)

def load():
    with open('d://test.txt','rb') as f:
        result=pickle.load(f)
    return result

write()
print(load())
这样??
似梦飞花 2017-07-18
  • 打赏
  • 举报
回复
csv不是有个自带的文件可以读成对象的吗 import csv help(csv)看下
韩乐1202 2017-07-18
  • 打赏
  • 举报
回复
sd,math,78,english,67 ui,math,45,english,90 zx,math,78,english,67 ty,math,34,english,89 就是这样的一个csv文件
chuifengde 2017-07-15
  • 打赏
  • 举报
回复
无图无数据,没办法测试

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧