def toCSV(self, delimiter = '\t'):
NOT_ALLOWED_FIELDS = ['evidence.evidence_chain', 'search_metadata', 'search_metadata.sort']
output = BytesIO()
if not self.data:
self.flatten(self.toDict()) # populate data if empty
if self.data and isinstance(self.data[0], dict):
key_set = set()
flattened_data = []
for row in self.data:
flat = self.flatten(row,
simplify=self.params.datastructure == SourceDataStructureOptions.SIMPLE)
for field in NOT_ALLOWED_FIELDS:
flat.pop(field, None)
flattened_data.append(flat)
key_set.update(flat.keys())
ordered_keys=self.params.fields or sorted(list(key_set))
ordered_keys = map(unicode,ordered_keys)
writer = csv.DictWriter(output,
ordered_keys,
restval='',
delimiter=delimiter,
quotechar='"',
quoting=csv.QUOTE_MINIMAL,
doublequote=False,
escapechar='\\',
# extrasaction='ignore',
)
writer.writeheader()
for row in flattened_data:
writer.writerow(row)
if self.data and isinstance(self.data[0], list):
writer = csv.writer(output,
delimiter=delimiter,
quotechar='"',
quoting=csv.QUOTE_MINIMAL,
doublequote=False,
escapechar='\\',
# extrasaction = 'ignore',
)
for row in self.data:
writer.writerow(row)
return output.getvalue()
评论列表
文章目录