【发布时间】:2014-08-23 13:28:14
【问题描述】:
我在解析 csv 文件时遇到问题:
Date,Open,High,Low,Close,Volume,Adj Close
2014-08-22,16.08,16.19,15.80,16.00,139800,16.00
2014-08-21,16.16,16.33,16.00,16.10,128500,16.10
2014-08-20,16.00,16.28,15.78,16.15,271200,16.15
2014-08-19,16.20,16.27,15.96,16.04,379600,16.04
2014-08-18,16.87,16.87,16.10,16.16,259200,16.16
2014-08-15,16.54,16.55,16.21,16.38,190900,16.38
我当前的代码如下所示:
hist_data_f = fopen(hist_path)
fgets(hist_data_f);
hist_data = textscan(hist_data_f, '%s,%d,%d,%d,%d,%d,%d')
目前的结果是这样的:
hist_data =
{
[1,1] =
{
[1,1] = 2014-08-22,16.08,16.19,15.80,16.00,139800,16.00
[2,1] = 2014-08-21
[3,1] = ,
[4,1] = 16.20
[5,1] = ,
[6,1] = 16.55
[7,1] = ,
[8,1] = 16.41
[9,1] = ,
[10,1] = 16.53
[11,1] = ,
[12,1] = 327700,16.13
[13,1] = 2014-08-05,17.00,17.29,16.91,17.01,125500,16.67
[14,1] = 2014-08-04
[15,1] = ,
[16,1] = 17.86
[17,1] = ,
[18,1] = 18.80
[19,1] = ,
[20,1] = 18.96
[21,1] = ,
[22,1] = 19.10
...等等。
我的目标是拥有这样的数据:
hist_data =
[
2014-08-22 16.08 16.19 15.80 16.00 139800 16.00
2014-08-21 16.16 16.33 16.00 16.10 128500 16.10
...
]
我做过的其他尝试:
hist_data = textscan(hist_data_f, '%s,%d,%d,%d,%d,%d,%d','Delimiter',',')
hist_data = csvread('hist_data.csv')
我似乎无法获得所需的输出。 有什么建议吗?
我已通读 Reading CSV files with MATLAB? Reading .csv file into MATLAB 还有一些没有运气的人。
【问题讨论】:
-
不应该把字符串项放在引号之间吗?
-
hist_data = [ 2014-08-22 16.08 ...]是什么意思?你的意思是一个单元格数组(为了混合字符串和数字)? -
是的@LuisMendo,抱歉不太清楚