def parse_ps(self, line): slinia = tuple(self.slices(unicode(line), self.slices_ps)) slinia = map(lambda s: s.strip(), slinia) pslist = slinia[0:len(self.fields_ps)] # Llista dels valors del tros que agafem dins dels sips data = build_dict(self.headers_ps, pslist) result, errors = self.ps_adapter.load(data) if errors: logger.error(errors) return result, errors
def parse_line(self, line): slinia = tuple(unicode(line.decode(self.encoding)).split(self.delimiter)) slinia = map(lambda s: s.strip(), slinia) parsed = {'ps': {}, 'measures': {}, 'orig': line} data = build_dict(self.headers_ps, slinia) result, errors = self.adapter.load(data) if errors: logger.error(errors) parsed['ps'] = result return parsed, errors
def parse_line(self, line): slinia = tuple(line.split(self.delimiter)) slinia = map(lambda s: s.strip(), slinia) parsed = {'ps': {}, 'measure_cnmc': [], 'orig': line} all_errors = {} consums = build_dict(self.headers, slinia) result, errors = self.adapter.load(consums) if errors: logger.error(errors) all_errors.update(errors) parsed['measure_cnmc'] = result return parsed, errors
def parse_line(self, line): line = unicode(line.decode(self.encoding)) slinia = tuple(self.slices(line, self.measures_slices)) slinia = map(lambda s: s.strip(), slinia) values = slinia[0:len(self.fields)] # Llista dels valors del tros que agafem dins dels sips data = build_dict(self.headers, values) result, errors = self.adapter.load(data) if errors: logger.error(errors) parsed = {'ps': {}, 'measures': [result], 'orig': line} return parsed, errors
def __init__(self, path, strict=False): """ :param path: Packed SIPS file path """ self.path = path self.parser = get_parser(self.path)(strict=strict) if not zipfile.is_zipfile(self.path): logger.error("File %s is not a zip file", self.path) raise zipfile.BadZipfile self.fd = zipfile.ZipFile(self.path) self.parser = get_parser(self.path)() self.files = iter(self.fd.namelist()) self.stats = PackedSipsFileStats(os.stat(path).st_size, len(self.fd.namelist()))
def parse_line(self, line): # passar previament la linia pel csv reader # per que agafi be els camps tot i les comes dins del camp direccio # per fer-ho cal passar-la a StringIO l = StringIO.StringIO(line) reader = csv.DictReader(l, fieldnames=self.headers_ps, delimiter=',') linia = reader.next() # nomes n'hi ha una parsed = {'ps': {}, 'orig': line} result, errors = self.adapter.load(linia) if errors: logger.error(errors) parsed['ps'] = result return parsed, errors
def parse_line(self, line): slinia = tuple(line.split(self.delimiter)) slinia = map(lambda s: s.strip(), slinia) start = self.measures_start step = self.measures_step parsed = {'ps': {}, 'measures': [], 'orig': line} c_line = slinia[start:start+step] all_errors = {} while c_line: c_line.insert(0, slinia[0]) consums = build_dict(self.headers, c_line) result, errors = self.adapter.load(consums) if errors: logger.error(errors) all_errors.update(errors) parsed['measures'].append(result) start += step c_line = slinia[start:start+step] return parsed, errors
def parse_measures(self, line): measures = [] start = self.measures_start step = self.measures_step c_line = line[start:start+step].strip() length_c = self.slices_measures i, j = self.get_pos('name') cups = line[i:j].strip() all_errors = {} while c_line: m = tuple(self.slices(c_line, length_c)) m = map(lambda s: s.strip(), m) consums = build_dict(self.headers_cons, m) consums['name'] = cups result, errors = self.measures_adapter.load(consums) if errors: logger.error(errors) all_errors.update(errors) measures.append(result) start += step c_line = line[start:start + step].strip() return measures, all_errors
def get_parser(sips_file): for path, cls in _PARSERS.items(): if cls.detect(sips_file): return cls logger.error("Parser not found for file %s", sips_file) raise ParserNotFoundException()