Import and modify " .txt" files
古いコメントを表示
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 件のコメント
Walter Roberson
2015 年 11 月 26 日
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
2015 年 11 月 26 日
Thorsten
2015 年 11 月 26 日
It would be best if you provide a sample file.
johnmay
2015 年 11 月 26 日
johnmay
2015 年 11 月 26 日
回答 (2 件)
Thorsten
2015 年 11 月 26 日
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 件のコメント
johnmay
2015 年 11 月 26 日
johnmay
2015 年 11 月 26 日
編集済み: Walter Roberson
2022 年 7 月 31 日
Thorsten
2015 年 11 月 26 日
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
2015 年 11 月 26 日
Thorsten
2015 年 11 月 26 日
You mean reading and write to the same file? No, I don't think so.
johnmay
2015 年 11 月 26 日
johnmay
2015 年 11 月 26 日
0 投票
2 件のコメント
Walter Roberson
2015 年 11 月 27 日
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
2015 年 12 月 1 日
カテゴリ
ヘルプ センター および File Exchange で Data Import and Export についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!