From 9c7d24406f268507f76c76c1377c9257a30c5b18 Mon Sep 17 00:00:00 2001 From: Celine Mercier Date: Wed, 17 Jun 2020 18:55:46 +0200 Subject: [PATCH] export: dictionaries are now formatted like in the original OBITools when exporting in tabular format and tuple formatting is cleaner --- python/obitools3/format/tab.pyx | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/python/obitools3/format/tab.pyx b/python/obitools3/format/tab.pyx index a6e527c..5f4f728 100755 --- a/python/obitools3/format/tab.pyx +++ b/python/obitools3/format/tab.pyx @@ -3,7 +3,7 @@ cimport cython from obitools3.dms.view.view cimport Line from obitools3.utils cimport bytes2str_object, str2bytes, tobytes -from obitools3.dms.column.column cimport Column_line +from obitools3.dms.column.column cimport Column_line, Column_multi_elts cdef class TabFormat: @@ -25,19 +25,29 @@ cdef class TabFormat: for k in self.tags: if self.header and self.first_line: - value = tobytes(k) + if isinstance(data.view[k], Column_multi_elts): + for k2 in data.view[k].keys(): + line.append(tobytes(k)+b':'+tobytes(k2)) + else: + line.append(tobytes(k)) else: value = data[k] - if value is not None: - if type(value) == Column_line: - value = value.bytes() + if isinstance(data.view[k], Column_multi_elts): + if value is None: # all keys at None + for k2 in data.view[k].keys(): # TODO could be much more efficient + line.append(self.NAString) else: - value = str2bytes(str(bytes2str_object(value))) # genius programming - if value is None: - value = self.NAString - - line.append(value) - + for k2 in data.view[k].keys(): # TODO could be much more efficient + if value[k2] is not None: + line.append(str2bytes(str(bytes2str_object(value[k2])))) # genius programming + else: + line.append(self.NAString) + else: + if value is not None: + line.append(str2bytes(str(bytes2str_object(value)))) + else: + line.append(self.NAString) + if self.first_line: self.first_line = False