Import and modify " .txt" files
Afficher commentaires plus anciens
Hi
I have some ".txt" files with this structure :
useless
useless
useless
...
data
data
...
useless
useless
useless
data
...
And I would like to have a .txt file like this :
data
data
data
...
I just know that each first line of data section begins with '1' but the length of the headerline (useless) is not fixed ! So I would like to iterate until lines begins with '1' and then keep the data.
How would you do that the easiest way ?
Thanks a lot
5 commentaires
Walter Roberson
le 26 Nov 2015
How can you tell when you have reached the end of a block of data?
What is the format of each line of the data section? Is it a single numeric value per line?
johnmay
le 26 Nov 2015
Thorsten
le 26 Nov 2015
It would be best if you provide a sample file.
johnmay
le 26 Nov 2015
johnmay
le 26 Nov 2015
Réponses (2)
Thorsten
le 26 Nov 2015
Copy those lines that have four numbers:
fid = fopen('file.txt', 'r');
fid2 = fopen('file2.txt', 'w');
line = fgets(fid);
while line ~= -1
[~, count] = sscanf(line, '%f');
if count == 4
fprintf(fid2, '%s', line);
end
line = fgets(fid);
end
fclose(fid)
fclose(fid2)
6 commentaires
johnmay
le 26 Nov 2015
johnmay
le 26 Nov 2015
Modifié(e) : Walter Roberson
le 31 Juil 2022
Thorsten
le 26 Nov 2015
That's weird. It works smoothly for me. You could add a
disp(line)
disp(count)
pause
in the loop and see if the lines are properly detected.
johnmay
le 26 Nov 2015
Thorsten
le 26 Nov 2015
You mean reading and write to the same file? No, I don't think so.
johnmay
le 26 Nov 2015
johnmay
le 26 Nov 2015
0 votes
2 commentaires
Walter Roberson
le 27 Nov 2015
Before the loop:
n = 2; %whatever is appropriate
fmt = repmat('%f ', 1, n);
fmt(end:end+1) = '\n'; %newline, unrelated to the variable 'n'
In the loop:
[data, count] = sscanf(line, '%f');
if count >= n
fprintf(fid2, fmt, data(1:n));
end
johnmay
le 1 Déc 2015
Catégories
En savoir plus sur Logical dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!