matlab - 读取具有不同分隔符大小的表格

Posted

技术标签:

【中文标题】matlab - 读取具有不同分隔符大小的表格【英文标题】:matlab - reading a table with different delimeter size 【发布时间】:2016-03-15 16:55:33 【问题描述】:

我有一张这样的桌子:

a    0.31  0.61  0.23  abc
abc  0.53  0.41  0.98  a

我尝试使用以下方法读取表格:

C = textscan(fileID,'%s%f%f%f%s','Delimiter',' ','MultipleDelimsAsOne',1);

它创建 5 列,每列是一个单元格。 我需要它是一个表格(每列应该有单元格行的长度)

我还尝试使用以下方法读取文件: readtable('file') 但它给了我不同分隔符大小的错误

【问题讨论】:

第一列和最后一列必须是一个单元格,因为它们包含大小不等的字符串。如果您坚持要有一张桌子,请使用table,在使用textscan阅读它之后。 但是如何将C(textscan 之后的变量)中的单元格转换为表格的一部分?基本上我想像这样访问第一行和第一列:C(1,1) 而不是C1, 11, 1 你的第二个分配没有意义,我猜应该是C1,1(1,1)。表并不打算用作变量,而只是在将内容写入文件时用作方便的容器。正如我所说:除非您用空格填充,否则您的第一列和最后一列不能成为矩阵,我会始终将字符串保留在单元格中。中间三列当然可以使用cell2mat 转换为矩阵。 可以调用 cell2table 从元胞数组中获取表格 cell2mat(C(:,2:4)) 有效,但我确实需要最后一列成为表格的一部分,因为最后我需要随机化行(包括最后一列)。 【参考方案1】:

也许:

t = readtable('blah.txt','Format','%s%f%f%f%s','Delimiter',' ','MultipleDelimsAsOne',1);

顺便说一句,readtable 基本上是 textscan 的包装器。如果您不想将第一行作为变量名读取,可以使用以下命令将该选项设置为 false:

t = readtable('blah.txt','Format','%s%f%f%f%s','Delimiter',' ','MultipleDelimsAsOne',1,'ReadVariableNames',false);

【讨论】:

以上是关于matlab - 读取具有不同分隔符大小的表格的主要内容,如果未能解决你的问题,请参考以下文章

Matlab如何读取含有多个不同分隔符的txt文件

读取具有不同列宽但在 R 中固定分隔符的文本文件

如何在熊猫中读取具有空格分隔值的文件

如何在 MATLAB 中读取带有“/”和空格的分隔文件

我初学matlab,现在需要完成用MATLAB读取TXT文本数据存于结构体,文本数据以逗号作为分隔。

我怎么能忽略'|'管道分隔符在 Google BigQuery 中读取 Google 表格数据?