how to read complicated text file
4 次查看(过去 30 天)
显示 更早的评论
Hello,
How to read the following "complicated" text file via textscan?
see attached file.dat:
name | multiplicity | pos | rot | excore
------------------------------------------------
a | 2 | 2 3 | 1 | 1
b | 1 | 1 2 3 | 6 | 1
c | 2 | 1 | 6 | 0
...
------------------------------------------------
The number of rows is uknown. The number of integers at column "pos" is variable.
0 个评论
采纳的回答
Simon
2013-9-19
try this
% read file with 5 columns and delimiter '|'
fid = fopen('readin.txt');
FC = textscan(fid, '%s %s %s %s %s', 'delimiter', '|');
fclose(fid);
% postprocessing
% remove blanks from string column
FC(1) = strtrim(FC(1));
% convert numeric columns
for n = 2:5
FC{n} = cellfun(@(x) str2num(x), FC{n}, 'UniformOutput', false);
end
name = FC{1};
multiplicity = cell2mat(FC{2});
pos = FC{3};
rot = cell2mat(FC{4});
excore = cell2mat(FC{5});
3 个评论
Simon
2013-9-20
If the first row is always the header, no problem:
% read file with 5 columns and delimiter '|'
fid = fopen('readin.txt');
FC = textscan(fid, '%s %s %s %s %s', 'delimiter', '|');
fclose(fid);
% get header
Header = cellfun(@(x) x(1), FC);
% remove header from file contents
FC = cellfun(@(x) x(2:end), FC, 'UniformOutput', false);
% postprocessing
% remove blanks from string column
FC(1) = strtrim(FC(1));
% convert numeric columns
for n = 2:5
FC{n} = cellfun(@(x) str2num(x), FC{n}, 'UniformOutput', false);
end
F1 = FC{1};
F2 = cell2mat(FC{2});
F3 = FC{3};
F4 = cell2mat(FC{4});
F5 = cell2mat(FC{5});
for n = 1:5
eval(sprintf('%s = F%d;', Header{n}, n));
clear(sprintf('F%d', n));
end
更多回答(2 个)
ES
2013-9-19
use textscan with delimiter '|'
FileObj=fopen(FileName);
CellData=textscan(FileObj, ...
'%s %s %s %s %s %s %s %s %s', 'delimiter', '|');
Azzi Abdelmalek
2013-9-19
编辑:Azzi Abdelmalek
2013-9-19
fid = fopen('file.txt');
line1 = fgetl(fid);
res={line1};
while ischar(line1)
line1 = fgetl(fid);
res{end+1} =line1
end
fclose(fid);
res(end)=[]
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Large Files and Big Data 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!