导入值在引号内的 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(或制表符分隔,或固定宽度的数据文件) ) 琐碎的。
我想导入结构如下的 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(或制表符分隔,或固定宽度的数据文件) ) 琐碎的。