使用引号

时间:2016-01-28 14:11:00

标签: matlab csv textscan

我想导入一个csv文件(data.csv),其结构如下

Area,MTU,Biomass MW,Lignite MW
CTA|DE(50Hertz),"01.01.2015 00:00 - 01.01.2015 00:15 (CET)","1227","6485"
CTA|DE(50Hertz),"01.01.2015 00:15 - 01.01.2015 00:30 (CET)","","6421"
CTA|DE(50Hertz),"01.01.2015 00:30 - 01.01.2015 00:45 (CET)","1230","n/e"
CTA|DE(50Hertz),"01.01.2015 00:45 - 01.01.2015 01:00 (CET)","N/A","6299"

我尝试使用textscan,效果非常好,但是一旦达到空引号,进程就会停止。参数'EmptyValue',0不起作用。

file = fopen('data.csv');
data = textscan(file, '%q %q "%f" "%f"', 'Delimiter', ',',...
    'headerlines', 1,'TreatAsEmpty', {'N/A', 'n/e'}, 'EmptyValue',0);
fclose(file);

任何想法,关于如何导入整个文件。

1 个答案:

答案 0 :(得分:1)

textscan(file,'%q%q%q%q%[^\n\r]','Delimiter',',','headerlines',1);

对我来说工作得很好。你得到的价值如下:" 01.01.2015 00:00 - 01.01.2015 00:15(CET)"但是为那些写一个单独的解析器是微不足道的。不要试图一步到位。那会让你痛苦不堪。将其分解为简单的单步骤。

此外,我强烈建议您在"当前文件夹"中右键单击您的文件。 matlab中的窗口,然后选择"导入数据"这使得导入CSV(或制表符分隔或固定宽度数据文件)变得微不足道。