我一直在尝试创建一个类,它将接受一个CSV文件,读取它并使用其中一行作为关键字将其排序到字典中。我可以在网上找到与csv文件有关的所有内容,并在课堂之外处理它们。将CSV排序到类中的字典
我试图打开csv文件(称为books.csv
)并将每行读入Shelf类的私有属性,称为__books
,它是一个字典。字典应该使用ISBN作为关键字。
我想将csv文件books.csv
放到字典__books{ }
中,并将第4行作为关键字,但每次运行它时,都会指出books.csv
文件未被读入字典中。
的第一段代码是:
class Book:
def __init__(self, title, author, price, isbn):
self.title = title
self.author = author
self.price = price
self.isbn=isbn
def getISBN(self):
return self.isbn
class Shelf:
__books={}
def __init__(self,filename):
f=open(filename, encoding="utf8")
csvreader = csv.reader(f)
for row in csvreader:
abook=Book(row[0],row[1],row[2],row[3])
self.__books[row[4]]=abook
这个代码将被调用到另一个文件和相应的代码是:
aShelf=Shelf("books.csv")
abook=aShelf._Shelf__books["0743482836"]
if abook.author == "A. Goose":
pass
else:
raise Exception
你是什么意思通过导入字典?你现在有什么不能正常工作? –
很抱歉,如果不清楚。实际的问题是:打开csv文件(称为“books.csv”)并将每行读入Shelf类的一个私有属性,称为 __books,它是一个字典。字典应该使用ISBN作为关键字。我想将csv文件“books.csv”放入字典__books {}中,并将第四个拖放作为关键字,但每次运行它时,都会声明“books.csv”文件未被读入字典。 – Albi
我认为它是由于在csvreader中开始行的缩进而引起的。如果你在一个层次上转换它,那么它将成为你的'__init__'方法的一部分,并且应该可以工作。 –