嗯!我收到了一个非常大的文本文件,以逗号分隔的值格式。我需要为每个文件构建一个结构来进行数据分析。小菜一碟!我之前做过这个。我很快写了一些代码来构建结构。最后,我发现可能存在这样的情况:数据具有来自真实数据的逗号,而不是用于分离数据。我在离开工作之前抓住了这个。现在在家工作,我希望通过在这里发布来获得解决方案或推荐的解决方案。 (下面是我的代码和数据文件示例)。感谢您的帮助,意见,解决方案和/或反馈。感谢
数据文件示例(第5行是问题开始的地方,' Bubba1,TTR1'不应该分开):
Chan,Date,Time,SignalName,Mode#,Lat,Long,
01,12 / 12 / 12,01:01:20.234,OFF,0,39.185,-106.85,
01,12 / 12 / 12,01:01:20.345,OFF,0,39.185,-106.85,
01,12 / 12 / 12,01:01:20.445,OFF,0,39.185,-106.85,
01,12 / 12 / 12,01:01:20.545,Bubba1,TTR1,1,39.185,-106.85,
01,12 / 12 / 12,01:01:20.645,Bubba1,TTR1,1,39.185,-106.85,
01,12 / 12 / 02,01:01:20.745,Bubba1,TTR1,1,39.185,-106.85,
01,12 / 12 / 12,01:01:20.845,OFF,0,39.185,-106.85,
我的代码:
clear;clc;
fid = fopen('test.txt');
fileHeader = textscan(fid,'%s',1,'delimiter','\n','headerlines',0);
fileHeader = strread(char(fileHeader{:}),'%s','delimiter',',')';
fileHeader = strrep(fileHeader,' ','');
fileHeaderLength=length(fileHeader);
format = repmat('%s',1,fileHeaderLength);
data = textscan(fid,format,'delimiter',',');
data=[data{:}];
答案 0 :(得分:0)
我认为这是一个只需要if语句和while循环的情况。 该行末尾的逗号使其更加复杂。
clear;clc;
fid = fopen('test.txt');
fileHeader = textscan(fid,'%s',1,'delimiter','\n','headerlines',0);
fileHeader = strread(char(fileHeader{:}),'%s','delimiter',',')';
fileHeader = strrep(fileHeader,' ','');
data = fileHeader;
line = {''};
while ~isempty(line)
line = textscan(fid,'%s',1,'delimiter','\n','headerlines',0);
line = strread(char(line{:}),'%s','delimiter',',')';
if length(line) > length(fileHeader)
line = {line{1:3}, strjoin(line(4:end-3), ', '), line{end-2:end}};
end
data=vertcat(data, line);
end
fclose(fid);
答案 1 :(得分:0)
将这些行添加到您的代码中:
for k= size(data,1):-1:1
if strcmp(data{k,2},'')
data{k-1,4}=[data{k-1,4} ',' data{k-1,5}];
data{k-1,5}=data{k-1,6};
data{k-1,6}=data{k-1,7};
data{k-1,7}=data{k,1};
data(k,:)=[];
end
end