Manipulate numbers in existing txt file
3 次查看(过去 30 天)
显示 更早的评论
Hi,
I want to manipulate numbers in a txt file which was created by catia. The txt file looks like this:
Catia puts a space between every string and float. For example I want to change 'l_overall (mm)' to 5000.
Thank you for your help!
1 个评论
Walter Roberson
2017-12-18
I notice that there is a space between l_overall and (mm) and a space between w_overall and (mm) but no space between h_overall and (mm) . Is the actual file consistent about the space there or not?
Can we assume that the variables are always in exactly the same order and that we can assume that l_overall will be the first entry on the line (for example) ? Or is it necessary to match the strings to determine which column to make the change to ?
Is it possible that the fields are really tab delimited rather than space delimited ?
采纳的回答
Walter Roberson
2017-12-19
fid = fopen('Table1.txt', 'rt');
colnames = fgetl(fid);
colvals = fscanf(fid, '%f', [1 inf]);
fclose(fid)
colvals(1) = 5000;
fid = fopen('newTable1.txt', 'wt');
fprintf(fid, '%s\n', colnames);
fprintf(fid, '%g\t', colvals(1:end-1));
fprintf(fid, '%g\n', colvals(end));
fclose(fid)
更多回答(1 个)
YT
2017-12-18
I don't know if I understand the question correctly, but if you want to change 'l_overall (mm)' to '5000' in your text file, you can do something like this (I assumed that your text file looks something like the test.txt I attached)
clear all;
fileID = fopen('test.txt');
C = textscan(fileID,'%s','delimiter','\n');
fclose(fileID);
C{:} = strrep(C{:},'l_overall (mm)','5000'); %replacing 'l_overall (mm)' by '5000'
writetable(cell2table(C{:}),'updated_data.txt','WriteVariableNames',0) %writing the new data
3 个评论
Walter Roberson
2017-12-19
You would get that textscan error if you provided the wrong filename to fopen()
Walter Roberson
2017-12-19
"There is a space between every column header, unit and variable"
The delimiter between columns is tab, just as I had guessed.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Text Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!