Split into different columns a .csv file with characters ';'
조회 수: 20 (최근 30일)
이전 댓글 표시
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
채택된 답변
Guillaume
2017년 5월 1일
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
Guillaume
2017년 5월 2일
"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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Large Files and Big Data에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!