Question

I have a textfile formatted like this:

3,4, ,CMX COP,JUL11,ABCD4,APPM,CME,4PTS09,F,HG,27, , ,1,4.3,2,27,23,1,NCAP1,0
5,6, ,AUD,JUN11,ABCD4,APPM,CME,4PTS09,F,6A,11, , ,1,1.7,10,27,23,1,NCAP1,0

I'm trying to read it with textscan, but I don't know how to deal with the blank spaces. I tried:

filename = 'E:\20110427.csv';

fileid = fopen(filename,'rt');
Data = textscan(fileid, '%d,%d,%c,%s,%s,%s,%s,%s,%s,%s,%s,%d,%c,%c,%d,%f,%d,%d,%d,%d,%s,%d')

The space between CMX and COP seems to be throwing it off, as well as potentially the blanks between the commas. Any suggestions?

CMX COP is one thing. It would be okay to delete the space.

Was it helpful?

Solution

You need to use the 'Delimiter' option for textscan (I also changed the %c on the spaces to %s to avoid reading the delimiter).

str = '5,6, ,AUD,JUN11,ABCD4,APPM,CME,4PTS09,F,6A,11, , ,1,1.7,10,27,23,1,NCAP1,0';
Data = textscan(str, '%d%d%s%s%s%s%s%s%s%s%s%d%s%s%d%f%d%d%d%d%s%d', 'Delimiter', ',');

OTHER TIPS

Or you can use the function regexp :

A = '3,4, ,CMX COP,JUL11,ABCD4,APPM,CME,4PTS09,F,HG,27, , ,1,4.3,2,27,23,1,NCAP1,0';
regexp(A,'\w','match')

If the same values are always missing on each lien you could just tell matlab to use multiple delimiters as one:

C = textscan(fileID,'%f %f %f %f','Delimiter',',','MultipleDelimsAsOne',1);

where 1 means true.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top