Import and modify " .txt" files
Mostra commenti meno recenti
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 Commenti
Walter Roberson
il 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
il 26 Nov 2015
Thorsten
il 26 Nov 2015
It would be best if you provide a sample file.
johnmay
il 26 Nov 2015
johnmay
il 26 Nov 2015
Risposte (2)
Thorsten
il 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 Commenti
johnmay
il 26 Nov 2015
johnmay
il 26 Nov 2015
Modificato: Walter Roberson
il 31 Lug 2022
Thorsten
il 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
il 26 Nov 2015
Thorsten
il 26 Nov 2015
You mean reading and write to the same file? No, I don't think so.
johnmay
il 26 Nov 2015
johnmay
il 26 Nov 2015
0 voti
2 Commenti
Walter Roberson
il 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
il 1 Dic 2015
Categorie
Scopri di più su Logical in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!