How to change the format of input .txt files?
Afficher commentaires plus anciens
Hello,
I have a question about a code. I have multiple .txt files with a specific format. Specifically , exh file has 1 header, and 4 columns with 1 tab space between each other (the 4th column has an alphanumeric format, and columns 1-3 are numbers).
I would like to change the given format, which is f7.3 1x f7.3 1x f3.1 1x character to the following
1x f6.3 4x f6.3 4x 3.1 1x character (x is tab (space) and f is float (real) number).
I am attaching an input file as an example...
Could you please help me?
Réponses (1)
Walter Roberson
le 8 Juin 2022
0 votes
You may have to read the header separately. Then readtable. Then I suggest you use compose() passing in a string() object as the format. Then write the strings to a file, possibly strjoin and fwrite
10 commentaires
Walter Roberson
le 8 Juin 2022
filename1 = 'input_file_test.txt';
d1 = readtable(filename1, 'ReadVariableNames', false);
formatSpec = "\t%6.3d\t\t\t\t%6.3d\t\t\t\t%3.1d\t%s"
str = compose(formatSpec, d1{:,1}, d1{:,2}, d1{:,3}, d1{:,4});
ss = strjoin(str, "\n");
fid = fopen(OutputFile, 'w') ;
%write any header at this point
%then
fwrite(fid, ss) ;
fclose(fid) ;
Ivan Mich
le 8 Juin 2022
Walter Roberson
le 8 Juin 2022
str = compose(formatSpec, d1{:,1}, d1{:,2}, d1{:,3}, string(d1{:,4}));
Walter Roberson
le 9 Juin 2022
I tested the following on my system.
filename1 = 'input_file_test.txt';
OutputFile = 'output_file_test.txt';
d1 = readtable(filename1, 'ReadVariableNames', false);
formatSpec = "\t%6.3d\t\t\t\t%6.3d\t\t\t\t%3.1d\t%s"
str = compose(formatSpec, d1{:,1}, d1{:,2}, d1{:,3}, string(d1{:,4}));
ss = strjoin(str, newline);
fid = fopen(OutputFile, 'w') ;
%write any header at this point
%then
fwrite(fid, ss) ;
fclose(fid) ;
Ivan Mich
le 10 Juin 2022
Walter Roberson
le 10 Juin 2022
Please show
class(d1{:,1})
class(d1{:,2})
class(d1{:,3})
class(d1{:,4})
class(string(d1{:,4}))
Also please remind us while matlab version you are using.
Ivan Mich
le 10 Juin 2022
Catégories
En savoir plus sur Data Type Conversion 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!