Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不同解析器的Fabrica_Python_Xml_Json_Oop_Csv - Fatal编程技术网

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
所以我有下一个问题。我不知道如何在所有的课堂上正确地写这篇文章。我编写了解决方案,但有错误(代码如下)。 我的问题是:如何在所有类中正确编写此代码

请给我推荐一本关于OOP的好书)

错误

回溯(最近一次呼叫最后一次):
文件“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