def parse_csv(self, report: dict): """ A basic CSV parser. """ raw_report = utils.base64_decode(report.get("raw")).strip() raw_report = raw_report.translate({0: None}) if self.ignore_lines_starting: raw_report = '\n'.join([line for line in raw_report.splitlines() if not any([line.startswith(prefix) for prefix in self.ignore_lines_starting])]) self.handle = RewindableFileHandle(io.StringIO(raw_report)) for line in csv.reader(self.handle, **self.csv_params): self.current_line = self.handle.current_line yield line
def parse_csv_dict(self, report: dict): """ A basic CSV Dictionary parser. """ raw_report = utils.base64_decode(report.get("raw")).strip() if self.ignore_lines_starting: raw_report = '\n'.join([ line for line in raw_report.splitlines() if not any([ line.startswith(prefix) for prefix in self.ignore_lines_starting ]) ]) self.handle = RewindableFileHandle(io.StringIO(raw_report)) for line in csv.DictReader(self.handle): self.current_line = self.handle.current_line yield line
def parse_csv_dict(self, report: dict): """ A basic CSV Dictionary parser. """ raw_report = utils.base64_decode(report.get("raw")).strip() raw_report = raw_report.translate({0: None}) if self.ignore_lines_starting: raw_report = '\n'.join([line for line in raw_report.splitlines() if not any([line.startswith(prefix) for prefix in self.ignore_lines_starting])]) self.handle = RewindableFileHandle(io.StringIO(raw_report)) csv_reader = csv.DictReader(self.handle, **self.csv_params) # create an array of fieldnames, # those were automagically created by the dictreader self.csv_fieldnames = csv_reader.fieldnames for line in csv_reader: self.current_line = self.handle.current_line yield line