"Error using textscan: Badly formed format string" with R2012b
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Simon Mürwald
am 23 Feb. 2017
Kommentiert: Walter Roberson
am 23 Feb. 2017
Hello,
I want to read about 14 million rows of data from an .csv file an save it in a cell array.
The .csv file looks like this:
vehicle_id;_date;measurement_start;measurement_end
100454;2016-09-11T15:01:14.769Z;2.620;6.400
100454;2016-09-11T15:01:15.769Z;7.820;10.400
100452;2016-09-11T15:01:16.769Z;3.620;9.400
100453;2016-09-11T15:01:17.769Z;4.620;5.400
100454;2016-09-11T15:01:18.769Z;20.620;25.400
100458;2016-09-11T15:01:19.769Z;8.620;16.400
100454;2016-09-11T15:01:20.769Z;45.620;50.400
This is my Script to create the cell Array:
clear;
[filename, pathname] = uigetfile({'*.csv','All Files (*.*)'}, 'Pick a file');
filename = [pathname filename];
delimiter = ';';
startRow = 2;
formatSpec = '%f %{yyyy-mm-ddTHH:MM:SSZ}D %f %f %*{^\n}';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'HeaderLines' ,startRow-1, 'ReturnOnError', false);
fclose(fileID);
The mistake is in formatSpec when I try to format the Date and Time.
It's one easy mistake, but I can't figure it out.
0 Kommentare
Akzeptierte Antwort
Jan
am 23 Feb. 2017
Bearbeitet: Jan
am 23 Feb. 2017
Use this instead:
formatSpec = '%f %s %f %f %*{^\n}';
and convert the dates afterwards using datenum. I do not remember if datenum of R2012b can handle this format, but in case of troubles or if this is time critical, you can use FEX: DateStr2Num (use the format spec 31).
0 Kommentare
Weitere Antworten (1)
Walter Roberson
am 23 Feb. 2017
The %D format spec was not supported until R2013b.
2 Kommentare
Walter Roberson
am 23 Feb. 2017
[num2cell(dataArray{1}), dataArray{2}, num2cell(dataArray{3}), num2cell(dataArray{4})]
Siehe auch
Kategorien
Mehr zu Other Formats finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!