Effacer les filtres
Effacer les filtres

how to read a txt file having alphanumeric data and special characters. ? My text file is like this. I tried textread but could not get a result. any suggestion.

6 vues (au cours des 30 derniers jours)
1 6:s 6:s 0 0 0 0.11 0 *0.889
2 6:s 6:s 0 0.272 0 0.006 0 *0.722
3 6:s 6:s 0 0.036 0 0 0.001 *0.963
4 6:s 6:s 0 0 0 0 0 *1
5 6:s 6:s 0 0 0 0 0 *1
6 6:s 3:f + 0 0.238 *0.365 0.009 0.033 0.355
7 6:s 5:n + 0 0 0 0 *0.999 0.001
8 6:s 6:s 0 0 0 0 0 *1
  3 commentaires
Muhammad Shoaib
Muhammad Shoaib le 14 Août 2018
Thanx Jonas, I want the last six columns on output containing only the numeric data.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 14 Août 2018
Modifié(e) : Stephen23 le 14 Août 2018
Here is an efficient solution using textscan. The test file is attached (you did not provide us with a sample file).
opt = {'Delimiter',' +*:','MultipleDelimsAsOne',true,'CollectOutput',true};
fmt = ['%*d%*d%*s%*d%*s',repmat('%f',1,6)];
[fid,msg] = fopen('test.txt','rt');
assert(fid>=3,msg)
C = textscan(fid,fmt,opt{:});
fclose(fid);
Which imports that last six columns of numeric data:
>> C{1}
ans =
0.00000 0.00000 0.00000 0.11000 0.00000 0.88900
0.00000 0.27200 0.00000 0.00600 0.00000 0.72200
0.00000 0.03600 0.00000 0.00000 0.00100 0.96300
0.00000 0.00000 0.00000 0.00000 0.00000 1.00000
0.00000 0.00000 0.00000 0.00000 0.00000 1.00000
0.00000 0.23800 0.36500 0.00900 0.03300 0.35500
0.00000 0.00000 0.00000 0.00000 0.99900 0.00100
0.00000 0.00000 0.00000 0.00000 0.00000 1.00000
  4 commentaires
Muhammad Shoaib
Muhammad Shoaib le 14 Août 2018
thank Stephen Cobeldick, the code worked for me.
jonas
jonas le 14 Août 2018
Don't forget to accept the answer so that future readers can see that the issue was resolved.

Connectez-vous pour commenter.

Plus de réponses (1)

jonas
jonas le 14 Août 2018
Modifié(e) : jonas le 14 Août 2018
str=fileread('notes.txt');
str=regexprep(str,'[:+*a-zA-Z]',' ')
opt = {'Delimiter',' ','MultipleDelimsAsOne',true,'CollectOutput',true};
out = textscan(str,'%f%f%f%f%f%f%f%f%f',opt{:})
  7 commentaires
jonas
jonas le 14 Août 2018
No problem! I'll refrain from deleting this answer as it shows how to use regexprep to clean up a textfile but make sure to accept the other one :)
Stephen23
Stephen23 le 14 Août 2018
Modifié(e) : Stephen23 le 14 Août 2018
+1 this is a good idea, very useful for complex/unusual file formats. Do not delete!

Connectez-vous pour commenter.

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by