1

我有一个格式如下的文本文件:

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

我正在尝试使用 textscan 阅读它,但我不知道如何处理空格。我试过了:

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')

CMX 和 COP 之间的空格似乎把它扔掉了,还有逗号之间的空格。有什么建议么?

CMX COP 是一回事。删除空间就可以了。

4

3 回答 3

1

或者您可以使用以下功能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')
于 2013-08-15T18:17:54.587 回答
1

您需要使用'Delimiter'textscan 选项(我还将空格上的 %c 更改为 %s 以避免读取分隔符)。

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', ',');
于 2013-08-15T18:13:17.420 回答
0

如果每个留置权上总是缺少相同的值,您可以告诉 matlab 使用多个分隔符作为一个:

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

其中 1 表示正确。

于 2017-06-27T16:48:38.543 回答