导入值在引号内的 csv 文件

Import csv file with values within quotation marks

我想导入结构如下的 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);

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

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

对我来说效果很好。您得到的值如下:“01.01.2015 00:00 - 01.01.2015 00:15 (CET)” 但是为这些值编写单独的解析器是微不足道的。不要试图一步完成所有的事情。那会给你带来很多痛苦和折磨。将其分解为简单的单个步骤。

此外,我强烈建议在 matlab 中右键单击 "Current Folder" window 中的文件,然后选择 "Import Data" 这使得导入 CSV(或制表符分隔,或固定宽度的数据文件) ) 琐碎的。