Readtable gives unusual results reading data from a text file.

4 views (last 30 days)
I'm trying to read a lot of text files using readtable. All the files have 7 columns of data, although the last column is usually blank.
Readtable normally gives this:
39×7 table
Var1 Var2 Var3 Var4 Var5 Var6 Var7
____ ____ ____ ____ ____ ____ __________
2009 10 6 3 33 29 {0×0 char}
2009 10 6 3 36 12.3 {0×0 char}
2009 10 6 3 36 53.3 {0×0 char}
2009 10 6 3 37 6.5 {0×0 char}
...
But one text file gives a very different result:
7×1 table
x20111118015544_7RF
_________________________
{'2011 11 18 01 33 43.7'}
{'2011 11 18 01 33 51.2'}
{'2011 11 18 01 33 60.0'}
{'2011 11 18 01 35 32.3'}
{'2011 11 18 01 36 03.9'}
{'2011 11 18 01 36 25.2'}
{'2011 11 18 01 36 33.4'}
This file actually has 26 lines, but readtable only returns the last seven lines and somehow takes the table column name from the 19th line. This line has a value that should go into Var7, but so do lines in other files and they don't cause this problem.
I suspect the text file has a bad character in it, but I can't find it.
Any suggestions?
  5 Comments
dormant
dormant on 4 Apr 2022
oops, sorry.
Attached are two files.
20080505-0553.txt is read succesfully into seven columns.
20111118-0021.txt is the naughty file.
dormant
dormant on 4 Apr 2022
Edited: dormant on 4 Apr 2022
I found some more examples and have spotted a pattern.
If the text file has some lines with values in the seventh column, it will read it succesfully if the last line is one of those with a value, as in the file 20160419-2010.txt.
If the last line doesn't have a value in the seventh column, but other lines do, it is read unsuccessfully.

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 4 Apr 2022
T = readtable('20160419-2010.txt','NumHeaderLines',0)
T = 7×7 table
Var1 Var2 Var3 Var4 Var5 Var6 Var7 ____ ____ ____ ____ ____ ____ __________ 2016 4 19 20 10 51.3 {'RF?' } 2016 4 19 20 11 7.6 {0×0 char} 2016 4 19 20 11 30.4 {0×0 char} 2016 4 19 20 11 59.1 {0×0 char} 2016 4 19 20 13 29.4 {0×0 char} 2016 4 19 20 19 17.4 {0×0 char} 2016 4 19 20 20 17 {'RF?' }
T = readtable('20111118-0021.txt','NumHeaderLines',0)
T = 26×7 table
Var1 Var2 Var3 Var4 Var5 Var6 Var7 ____ ____ ____ ____ ____ ____ __________ 2011 11 18 0 21 59.2 {0×0 char} 2011 11 18 0 29 6.9 {0×0 char} 2011 11 18 0 31 6.8 {0×0 char} 2011 11 18 0 31 14.7 {0×0 char} 2011 11 18 0 32 12.7 {0×0 char} 2011 11 18 0 33 1.4 {0×0 char} 2011 11 18 0 34 32.4 {0×0 char} 2011 11 18 0 34 38.1 {0×0 char} 2011 11 18 0 34 43.5 {0×0 char} 2011 11 18 0 35 42.1 {0×0 char} 2011 11 18 0 37 29.1 {0×0 char} 2011 11 18 0 41 39.1 {0×0 char} 2011 11 18 1 33 43.7 {0×0 char} 2011 11 18 1 33 51.2 {0×0 char} 2011 11 18 1 33 60 {0×0 char} 2011 11 18 1 35 32.3 {0×0 char}
T = readtable('20080505-0553.txt','NumHeaderLines',0)
T = 31×7 table
Var1 Var2 Var3 Var4 Var5 Var6 Var7 ____ ____ ____ ____ ____ ____ __________ 2008 5 5 5 53 50.2 {0×0 char} 2008 5 5 5 53 59.4 {0×0 char} 2008 5 5 5 54 28.7 {0×0 char} 2008 5 5 5 54 41.9 {0×0 char} 2008 5 5 5 55 18.4 {0×0 char} 2008 5 5 5 55 24.2 {0×0 char} 2008 5 5 5 55 32.6 {0×0 char} 2008 5 5 5 55 55.2 {'RF?' } 2008 5 5 5 56 16.9 {0×0 char} 2008 5 5 5 56 28 {0×0 char} 2008 5 5 5 56 42.8 {0×0 char} 2008 5 5 5 56 57.3 {0×0 char} 2008 5 5 5 56 59.7 {0×0 char} 2008 5 5 5 57 9.7 {0×0 char} 2008 5 5 5 57 27.2 {0×0 char} 2008 5 5 5 57 32.1 {0×0 char}
  1 Comment
dormant
dormant on 4 Apr 2022
Fantastic, thank you.
I also managed to fix it by setting the format.
T = readtable( fileEventList, 'Format','%f %f %f %f %f %f %s' );

Sign in to comment.

More Answers (0)

Categories

Find more on Environment and Settings in Help Center and File Exchange

Tags

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!