一个空格引发的Bug! ----CSV输出和CSV读入

来源:互联网 发布:mac修改u盘权限 编辑:程序博客网 时间:2024/09/21 09:06

  问题引出:

  (1) 为了维护一个巨大的数据表的完整性,前期由于数据表中有缺损,不全,所以把数据表进行重新被全。

        做法:把不全的表的数据先导入,然后再读出需要补充的数据,然后并表,再输出成CSV, 供平时调用。

     (2)由于原来维护全是用MATLAB去维护,JULIA中输出CSV的报表,不再进行读入操作,所以一直没有注意。此次换成JULIA读入原JULIA输出的CSV,结果发现有问题。

    问题:

       1、一切看起来非常正常,看似完美的输出CSV,打开CSV的格式,每个字段都非常正常,全是数值格式。

       2、但是,读入CSV时,就发现,里面有一些字段既不是Float64, 也不是String, 而是SubString! 而我需要用parsefloat()进行转换也一直报错,因为只接受String类型!

       后来查了N久,发现是在CSV输出函数中,多写了一个空格。

 

          write(stream,",") #  ""中不留空格!否则可以读出来不能正常转成FLOAT64!

 

附:输出CSV函数:---已修正!

###############################

functionwriteBarDataToInputFormatCSV(filepath::String,data::Array{kBarData,1})

      #bar格式:kb=kBarData(Code,DateTime,Close,Open,High,Low,PreClose,OpenInterest,Volume,Amount)

      #StockCode[1]  DateTime[2]          Close[3]   Open[4]    PreClose[5]Amount[6]  Volume[7]High[8]          Low[9]

       stream=open(filepath,"w")

       #kBarData(Code,DateTime,Close,Open,High,Low,PreClose,OpenInterest,Volume,Amount)

       write(stream,["Code",",","DateTime",",", "Close",  ",",  "Open",  "," ,  "PreClose",",", "Amount",",", "Volume",  ","  ,"High",",", "Low\n"])

       for  kbar  in  data

               write(stream,kbar.Code)

               write(stream,",") #‘’中不留空格!否则可以读出来不能正常转成FLOAT64!

               write(stream,getStandardDateTimeString(kbar.DateTime))#标准的输出方式

               write(stream,",")

               write(stream,string(kbar.Close))

               write(stream,",")

               write(stream,string(kbar.Open))

               write(stream,",")

               write(stream,string(kbar.PreClose))

               write(stream,",")

               write(stream,string(kbar.Amount))

               write(stream,",")

               write(stream,string(kbar.Volume))

               write(stream,",")

               write(stream,string(kbar.High))

               write(stream,",")

               write(stream,string(kbar.Low))

               write(stream,"\n")

      end

      close(stream)

end

0 0
原创粉丝点击