假设我有数百行,如下一行:
姓名姓氏1年级2年级3
使用
从文本中获取此数据看起来很容易[firstName,lastName,grade1,grade2,grade2] = textread(fileName,'%s %s %f %f %f');
但是,如果有些学生有二等名,我该如何阻止这种结构?
答案 0 :(得分:0)
如果可以确定第二个名称是数据结构的唯一可变部分,则可以使用fgetl()逐行读取并在决定解析方法之前计算逗号数。这是一个例子。你会把整个块放在一个循环中。希望你没有大量的数据要解析。
a = 'John, Smith, 95, 85, 71';
% inline = fgetl(fid);
if length(strfind(a,',')) == 4
c = textscan(a,'%s %s %f %f %f', 'Delimiter',',');
first_name = c{1}{1}
last_name = c{2}{1}
grades = cell2mat(c(3:5))
elseif length(strfind(a,',')) == 3
c = textscan(a,'%s %f %f %f', 'Delimiter',',');
first_name = c{1}{1}
grades = cell2mat(c(2:4))
end