将制表符分隔的txt文件读入matlab

时间:2017-04-19 21:53:52

标签: matlab tab-delimited

我正在尝试在MatLab中读取制表符分隔的txt文件。 该文件包含由数字,文本,日期,日期时间,您可以想到的所有内容组成的列。有些列中有很长的句子,有逗号和所有内容。

它超过了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文件的任何帮助表示赞赏。我没有尝试过文本扫描,因为它看起来很痛苦。

2 个答案:

答案 0 :(得分:1)

您可以使用textscan。这会将每列放在tableDataEDM的单独单元格中。假设每行都有一个int \ t int \ t string

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

最后一个参数'%d %d %s'您应该更改以匹配您的格式。

答案 1 :(得分:0)

您是否尝试过使用导入向导并将分隔符更改为标签?只需将文件拖到工作区窗口中,就会出现向导。