2017-04-19 94 views
0

我想讀MatLab中一個製表符分隔txt文件。 該文件包含由數字,文本,日期,日期時間組成的列,您可以想到的所有內容。一些專欄中有很長的句子,用逗號和一切。閱讀製表符分隔的TXT文件到MATLAB

超過Excel中的行限制(我有大約150萬行),所以我不能將它轉換爲CSV或XLSX文件。

我曾嘗試以下:

tableDataEDM = tdfread(pathDataEDM,'\t'); 

我回來「需要統計和機器學習工具箱」 我沒有它

tableDataEDM = dlmread(pathDataEDM,'\t'); 

文件格式和矢量字符之間不匹配。 我回來「無法讀取‘’從文件中的字段」

,這是因爲該文件有文本和數字和日期,一切數字。 dlmread喜歡數字數據我猜

 tableDataEDM = readtable(pathDataEDM,'Delimiter','\t','ReadVariableNames',true); 

I get back: 
    Error using readtable (line 197) 
    Reading failed at line 6. All lines of a text file must have the same number of delimiters. Line 6 has 10 
    delimiters, while preceding lines have 32. 

    Note: readtable detected the following parameters: 
    'HeaderLines', 0, 'Format', '%q%q%q%q%D%D%D%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%D%D%q%q%q%q%q%q%q%q%q' 

    Error in Edm_FinderComp_CrossOver (line 33) 
    tableDataEDM = readtable(pathDataEDM,'Delimiter','\t','ReadVariableNames',false); 

我不知道爲什麼說這個雖然。我可以很容易地將這些數據導入python。有什麼我失蹤嘗試並將其納入matlab?

進口製表符分隔txt文件的任何幫助表示讚賞。我沒有嘗試過文字掃描,因爲它看起來很痛苦。

回答

1

您可以使用textscan。這將把每列放在一個單獨的單元格中,位於tableDataEDM。假設對於每一行,你有一個int \ t int \ t string

tableDataEDM = textscan(fopen(pathDataEDM),'%d %d %s') 

最後一個參數,'%d %d %s'你應該改變,以配合您的格式。

+0

tableDataEDM = textscan(的fopen(pathDataEDM),「%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S%S% s%s%s%s%s%s%s%s%s%s%s','delimiter','\ t')謝謝,我試過了,但並沒有結束因爲一些製表符分隔的行滾到下一行....所以當你打開textscaned表中的數據從一行最終有兩個或三個不同的行有時....當您在記事本++中打開文件它看起來像這樣,但在普通的記事本中,行很好。 – brandog

+0

嗯,這很奇怪,好像你的文件沒有以一致的方式格式化,這將使這種方法很難工作。 – qbzenker

0

您是否嘗試過只用導入嚮導和改變分隔符標籤?只需將文件拖到工作區窗口中,即會出現嚮導。

相關問題