How to change the format of input .txt files?
Mostrar comentarios más antiguos
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?
Respuestas (1)
Walter Roberson
el 8 de Jun. de 2022
0 votos
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 comentarios
Walter Roberson
el 8 de Jun. de 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
el 8 de Jun. de 2022
Walter Roberson
el 8 de Jun. de 2022
str = compose(formatSpec, d1{:,1}, d1{:,2}, d1{:,3}, string(d1{:,4}));
Walter Roberson
el 9 de Jun. de 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
el 10 de Jun. de 2022
Walter Roberson
el 10 de Jun. de 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
el 10 de Jun. de 2022
Categorías
Más información sobre Characters and Strings en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!