Effacer les filtres
Effacer les filtres

Problem with importing data from tab delimited .txt file

33 vues (au cours des 30 derniers jours)
yuval
yuval le 17 Déc 2020
Commenté : yuval le 21 Déc 2020
I have a very long 5-column text data with tab as delimiter, for example say that 'txtfile.txt' has 7 lines:
144141 180738085 two two mc
144141 180738086 of of io
144141 180738087 us us ppio2
144141 180738088 . . .
144141 180738089 " " "
144141 180738090 Hollywood hollywood np1
144141 180738091 Heartbeat heartbeat np1
using importdata i get a 7X1 cell array like the following:
importdata('txtfile.txt','\t') % same for importdata('txtfile.txt')
output:
{'144141→180738085→two→two→mc' }
{'144141→180738086→of→of→io' }
{'144141→180738087→us→us→ppio2' }
{'144141→180738088→.→.→.' }
{'144141→180738089→"→"→"' }
{'144141→180738090→Hollywood→hollywood→np1'}
{'144141→180738091→Heartbeat→heartbeat→np1'}
So importdata doesn't work. If I use readtable I get a 5X5 table like the following:
readtable('txtfile.txt') % also for readtable('txtfile.txt','Delimiter','tab')
output:
Var1 Var2 Var3 Var4 Var5
__________ __________ _______ ________________________________________________________________________________________________ __________
1.4414e+05 1.8074e+08 {'two'} {'two' } {'mc' }
1.4414e+05 1.8074e+08 {'of' } {'of' } {'io' }
1.4414e+05 1.8074e+08 {'us' } {'us' } {'ppio2' }
1.4414e+05 1.8074e+08 {'.' } {'.' } {'.' }
1.4414e+05 1.8074e+08 {'→' } {'←↵144141→180738090→Hollywood→hollywood→np1←↵144141→180738091→Heartbeat→heartbeat→np1'} {0×0 char}
So something about having a quotation mark in the text file ruins it.
Any help would be much appreciated.
  5 commentaires
Mathieu NOE
Mathieu NOE le 17 Déc 2020
you can get the same result by combining readlines and split - still remain the question why the tab option is not working in readlines
s = importdata('data_tab.txt','\t');
sp = split(s,' ');
yuval
yuval le 21 Déc 2020
I ended up using
s = importdata(file_name);
sp = split(s,' ');
because a couple of the other suggestions had a problem with empty values, i.e. two consecutive tabs. It works well although a bit slow.
Thanks everyone!

Connectez-vous pour commenter.

Réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by