Python 不同解析器的Fabrica
问题:Python 不同解析器的Fabrica,python,xml,json,oop,csv,Python,Xml,Json,Oop,Csv,问题: 编写一个类Fabrica what give:文件和/或格式化文件的方式, 返回:dict中此文件的数据 编写一个只有一个方法“Reader”的抽象类读取器 没有实施 编写3个类CSVReader、XMLReader、JSONReader。他们 继承自Reader,必须实现方法“Reader”与 解析csv、json和xml的功能。必须在中返回数据 将格式记录到fabrica 所以我有下一个问题。我不知道如何在所有的课堂上正确地写这篇文章。我编写了解决方案,但有错误(代码如下)。 我
- 编写一个类Fabrica what give:文件和/或格式化文件的方式, 返回:dict中此文件的数据
- 编写一个只有一个方法“Reader”的抽象类读取器 没有实施李>
- 编写3个类CSVReader、XMLReader、JSONReader。他们 继承自Reader,必须实现方法“Reader”与 解析csv、json和xml的功能。必须在中返回数据 将格式记录到fabrica
回溯(最近一次呼叫最后一次):
文件“ClassParsers.py”,第62行,在
打印(数据)
TypeError:\uuuuu str\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
这些决不是一个完整的解决方案;这只是一堆评论
据我所知,try/except块应该放在FactoryReader中。Python中没有抽象类,所以类读取器可能是空的。或者,如果你愿意,只要
class Reader:
def reader(data):
pass
(如果您使用的是Python2,最好使用新样式的类:类读取器(对象)
)
要求FactoryReader返回dict而不是字符串,因此\uuuu str\uuu
函数并不重要。您得到的错误是告诉您FactoryReader中的\uuu str\uuu
方法应该返回字符串。最好不要实现\uuuu str\uuuu
并为该函数使用另一个名称;说get\u reader
。然后,您应该以dict方式返回数据。是的
def get_reader(self):
if self.fileName.endswith('.csv') or self.frmt == 'csv':
return CSVReader(self.filename)
etc
那么
类似地,对于JSONReader
和XMLReader
class Reader:
def reader(data):
pass
def get_reader(self):
if self.fileName.endswith('.csv') or self.frmt == 'csv':
return CSVReader(self.filename)
etc
class CSVReader(Reader):
def reader(filename):
code to open filename, read it and parse it
code to convert parsed code into dict
return dict