Info
This question is closed. Reopen it to edit or answer.
Help with importing specific text file
    2 views (last 30 days)
  
       Show older comments
    
I have a text file that is uploaded.
I removed the html tags with the following code:
str=fileread('code=acaj&period=30&endtime=2015-06-30.txt');
ind3=strfind(str,'201');
str(1:ind3(1)-1)=' ';
C={'<','>','q','w','e','r','t','z','u','i','o','p','a','s','d','f','g','h','j','k','l','y','x','c','v','b','n','m',...
       'Q','W','E','R','T','Z','U','I','O','P','A','S','D','F','G','H','J','K','L','Y','X','C','V','B','N','M'...
       '!','"','#','$','%','&','/','(',')','=','?','*','+','','\','|','[',']','{','}','@',';','_',...
       '^','?','~','?','°','?','`','?','´','?','¨'};
ind=regexp(str,strjoin(C,'|'));
str(ind)=' ';
After using this code you get a string str that looks like this.
2015-05-31 00:00:00                                       2.43         6.02         
2015-05-31 00:01:00         12.5         0.004         2.403         6.044         60         60                  
2015-05-31 00:02:00                                       2.381         6.008                                                
2015-05-31 00:03:00                                       2.372         5.993                                                
2015-05-31 00:04:00                                       2.373         5.978                                                
2015-05-31 00:05:00                                       2.42         5.991                      
2015-05-31 00:06:00         12.5         0.004         2.347         6.019         60         60                  
2015-05-31 00:07:00                                       2.402         5.961                                                
2015-05-31 00:08:00                                       2.382         6.008   
...
So there are date&time and then two numbers or six numbers up to another date&time. Six numbers repeat every five rows. 
If there are two numbers I need the second one to remember, and if there are six numbers I need the fourth one to remember.
When I say remember I mean to add it into an array. And the date&time should be another array.
I tried with text scan but in textscan I need to specify for example %s %s %f %f. And problem is that its not the same for all the rows because sometimes there are 2 numbers and sometimes 6. 
How can i import this data?                        
Answers (1)
  madhan ravi
      
      
 on 23 Jan 2019
        Requires 2013b or later:
opts=detectImportOptions('sample.txt');
T=readtable('sample.txt',opts);
t=table2cell(T);
idx=all(cellfun(@ischar,t),1);
T(:,~idx)
2 Comments
  madhan ravi
      
      
 on 23 Jan 2019
				Then it should work fine download the attached file in my answer and try the code , the output is like (which worked for me):
ans =
  10×10 table
            Var1              Var2      Var11    Var20    Var29    Var38    Var41    Var47    Var50    Var56
    ____________________    ________    _____    _____    _____    _____    _____    _____    _____    _____
    31-May-2015 00:00:00    00:02:00     NaN       NaN      NaN      NaN    2.381     NaN     6.008     NaN 
    31-May-2015 00:00:00    00:03:00     NaN       NaN      NaN      NaN    2.372     NaN     5.993     NaN 
    31-May-2015 00:00:00    00:04:00     NaN       NaN      NaN      NaN    2.373     NaN     5.978     NaN 
    31-May-2015 00:00:00    00:05:00     NaN       NaN      NaN      NaN     2.42     NaN     5.991     NaN 
    31-May-2015 00:00:00    00:06:00    12.5     0.004    2.347    6.019      NaN      60       NaN      60 
    31-May-2015 00:00:00    00:07:00     NaN       NaN      NaN      NaN    2.402     NaN     5.961     NaN 
    31-May-2015 00:00:00    00:08:00     NaN       NaN      NaN      NaN    2.382     NaN     6.008     NaN 
    31-May-2015 00:00:00    00:09:00     NaN       NaN      NaN      NaN    2.381     NaN     5.983     NaN 
    31-May-2015 00:00:00    00:10:00     NaN       NaN      NaN      NaN    2.361     NaN     5.988     NaN 
    31-May-2015 00:00:00    00:11:00    12.4     0.004    2.359     5.98      NaN      60       NaN      60 
Note: The NaNs you see is the empty ' ' since there cannot be a hole in a table or matrix.
This question is closed.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

