Split into different columns a .csv file with characters ';'
18 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have a large .csv file with the below format ('Date;Time;Value').
'16/4/2017;05:12:02;1.21'
and need to import it into 3 collumns.
'16/4/2017' '05:12:02' '1.21'
My code is:
fid = fopen('KD.csv','r');
C = textscan(fid, '%s %s %f %f %s', 'HeaderLines',1, 'CollectOutput',true);
fclose(fid);
[dt,val,exch] = deal(C{:});
w=regexp(dt,'\s+','split')
out=reshape([w{:}],1,[])'
time = [dt regexp(dt, '\d\d:\d\d:\d\d', 'match', 'once')]
Any help?
0 Commenti
Risposta accettata
Guillaume
il 1 Mag 2017
Even better than xlsread, readtable would be a much better and modern option. If the header line that is skipped actually contains columns names readtable could even parse these. Skipping it, as in the original code:
kd = readtable('KD.csv', 'delimiter', ';', 'ReadVariableNames', false, 'HeaderLines', 1);
kd.Properties.VariableNames = {'dt', 'val', 'exch'}; %name the columns of the table
Note that readtable is usually clever enough to detect the delimiter, number of lines to skip and whether or not the variable names are included, so:
kd = readtable('KD.csv');
may be enough.
3 Commenti
Guillaume
il 2 Mag 2017
"thanks a lot! "readtable" did exactly what i needed!"
So why did you unaccept the answer? Because it didn't answer your completely different other question which wasn't asked in the first place?
"i should convert time from non-numeric form to what?"
If readtable didn't already convert your time to datetime. You can do it manually,
kd.val = datetime(kd.val, 'InputFormat', 'HH:mm:ss');
Modern versions of matlab know how to plot against datetime.
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!