我想只得到一个巨大的数据文件的第一行(大约80列和16 000行)。第一行是带有标题(文本)的行。我怎么得到它?
示例:
idA idHI idYesterday idWW2 idUK
答案 0 :(得分:1)
一种简单的方法可以是使用函数fgetl,它实际上是逐行读取文件。
读取行以string
如果您想获取字符串的单个标记,可以使用以下函数:
阅读第一行
fp=fopen('huge_file.txt','r');
first_line=fgetl(fp)
fclose(fp);
使用textscan
tok_list=textscan(first_line,'%s')
使用strtok
修改强>
如果分隔符是tab
字符,则必须将其指定为char(9)
,即tab
的ASCII代码,而不是转义序列{{ 1}}在strtok documentation
在以下示例中,使用了\t
分隔符
char(9)
给定输入文件,例如
% [token,remain]=strtok(first_line,' ');
[token,remain]=strtok(first_line,char(9));
tok_list{1}=token
cnt=1;
while(1)
if isempty(remain)
break;
end
%[token,remain] = strtok(remain,' ');
[token,remain] = strtok(remain,char(9));
cnt=cnt+1;
tok_list{cnt}=token
end
输出将是:
col_1 col_2 col_3 col_4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
其中first_line =
col_1 col_2 col_3 col_4
是first_line
数组
单个令牌是char
:
textscan
或使用tok_list =
{4x1 cell}
tok_list{1}
ans =
'col_1'
'col_2'
'col_3'
'col_4'
strtok
tok_list =
'col_1' 'col_2' 'col_3' 'col_4'
是一个允许使用不同大小的标记的cellarray
希望这有帮助,
Qapla'