How to extract specific data from a .txt file
Mostra commenti meno recenti
Hi Everyone,
I am trying to extract certain data which is location specific from a .txt file. The text file is not uniformly arranged & contains all kind of characters.
In my case I am looking to extract value of Fx & Fy in row 17 of the FILE.txt file. I have also attached the .txt file.
Looking forward to get it resolved.
Thank you & Reagrds,
Risposta accettata
Più risposte (1)
filename = 'FILE.TXT';
S = fileread(filename);
XY = str2double(regexp(S, '(?<=F[XY]= )\S+', 'match'))
3 Commenti
Abubakar Rashid
il 31 Gen 2023
Walter Roberson
il 31 Gen 2023
[XY] matches something that is either X or Y. F[XY]= matches F then either X or Y then = then space. The (?<= ) part means that the FX= or FY= must be present in the input stream and to position immediately after that, but that the text is not to be included in what is returned from the function. It positions the input stream but it does not extract anything from the input stream.
The \S+ matches any number of non-whitespace characters.
So the code looks for FX= or FY= in the input stream, and extracts the next column to be returned from the function. This searching is repeated as long as there are more occurances in the input stream, so both FX and FY would be extracted.
The return from regexp() with 'match' is going to be a cell array of character vectors. Those character vectors are passed to str2double() to be converted to numeric form.
A B C FX= 1325.3 Q= -5 FY= -23.2 P ZFY= 83
The expression as coded does not know to look for whitespace before the variable, so the ZFY= would be matched as being an occurance of FY= . So the regexp() would return {'1325.3', '-23.2', '83'} in this particular case. That could be adjusted if it mattered (but it doesn't matter to you.)
Abubakar Rashid
il 31 Gen 2023
Categorie
Scopri di più su Environment and Settings in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!