how to read complicated text file
1 view (last 30 days)
Show older comments
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 Comments
Accepted Answer
Simon
on 19 Sep 2013
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 Comments
Simon
on 20 Sep 2013
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
More Answers (2)
ES
on 19 Sep 2013
use textscan with delimiter '|'
FileObj=fopen(FileName);
CellData=textscan(FileObj, ...
'%s %s %s %s %s %s %s %s %s', 'delimiter', '|');
Azzi Abdelmalek
on 19 Sep 2013
Edited: Azzi Abdelmalek
on 19 Sep 2013
fid = fopen('file.txt');
line1 = fgetl(fid);
res={line1};
while ischar(line1)
line1 = fgetl(fid);
res{end+1} =line1
end
fclose(fid);
res(end)=[]
1 Comment
See Also
Categories
Find more on Large Files and Big Data in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!