Импорт 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);

Любая идея, как импортировать весь файл.

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 (или файлов с разделенными табуляцией, или файлов данных фиксированной ширины) тривиальным.

Другие вопросы по тегам