diff --git a/src/yapsut/ya_extended_csv.py b/src/yapsut/ya_extended_csv.py index 2eeaf424daaf88cc57045066970e5faad283640c..1c31c8249c3e1f488771226961555e2561a367f5 100644 --- a/src/yapsut/ya_extended_csv.py +++ b/src/yapsut/ya_extended_csv.py @@ -1,4 +1,9 @@ -""" Yet Another extended csv manages + +from collections import OrderedDict + +import pandas +class ya_extended_csv : + """ Yet Another extended csv manages extended csv is csv with: @@ -32,18 +37,15 @@ declares the python interpreter #!__interpreter__=<python/c> the separator can be a single character or a sequence -""" - -from collections import OrderedDict - -import pandas -class ya_extended_csv : + """ @property def header(self) : + """returns the header""" return self._header # @property def skipUndef(self) : + """get/set the skipUndef flag""" return self._skipUndef @skipUndef.setter def skipUndef(self,this) : @@ -51,6 +53,7 @@ class ya_extended_csv : # @property def sep(self) : + """get/set the separator""" return self._sep # @sep.setter @@ -59,11 +62,13 @@ class ya_extended_csv : # @property def reserved_tags(self) : + """list of tags reserved (can not be used by the user)""" return ['creator','created','creator_version','header_version','sep','tag_comment','tag_variable','filename','author' ,'!__index_label','!__sep__','!__tag_comment__','!__tag_variable__','!__assign_operator__','!__index_label__'] # @property def doNotLoadTags(self) : + """list of tags not to be loaded""" return ['BEGIN','END','!__index_label','!__sep__','!__tag_comment__','!__tag_variable__','!__assign_operator__','!__index_label__'] # def __init__(self,sep=',',tag_comment='#',tag_variable='#!',assign_operator='=',skipUndef=True,undefValue=None,index_column=0) : @@ -111,21 +116,32 @@ syntax elements can be changed modifiing parameters if not self._skipUndef : self._header[a]=self._undefValue # + @property + def hdr_to_str(self) : + "header converted to string, fields separed by '\n'." + if len(self._header.keys())==0 : return "" + out=[k+'='+str(self._header[k]) for k in self._header.keys()] + return '\n'.join(out) + # def get_data(self,sep) : + "get the data" engine='c' if len(sep)==1 else 'python' if self._verbose : print(engine,sep) self._csv=pandas.read_csv(self._fname,sep=sep,comment=self._tag_comment,engine=engine,index_col=self._index_column) # def set_pandas_attrs(self) : + "set the .attrs dictionary of pandas table" if len(self._header.keys())>0 : for k in self._header.keys() : if k not in self.doNotLoadTags : self._csv.attrs[k]=self._header[k] # def to_pandas(self) : + "to pandas table" return self._csv # def to_dict(self) : + "to dictionary" out=OrderedDict() for k in self._csv.keys() : out[k]=self._csv[k].values